J-u*_*ior 8 ssh scp cron backup
是的,我知道这是经典。我已经用谷歌搜索了它,但它仍然不起作用。我有以下脚本:
#First go to SVN repo folder
cd $svnrepos
# Just make sure we have write access to backup-folder
if [ -d "$bakdest" ] && [ -w "$bakdest" ] ; then
# Now $repo has folder names = project names
for repo in *; do
# do svn dump for each project
echo "Taking backup/svndump for: $repo"
echo "Executing : svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump \n"
# Now finally execute the backup
svnadmin dump $repo > $bakdest/$repo-$bakdate.svn.dump
# You can go an extra mile by applying tar-gz compression to svn-dumps
# We also would like to save the dump to remote place/usb
# USB/other directory exists, copy the dump there
echo "Going to copy $repo dump to $baktousb directory...\n"
/usr/bin/scp -v $bakdest/$repo-$bakdate.svn.dump $baktousb/$repo-$bakdate.svn.dump
done
else
echo "Unable to continue SVN backup process."
echo "$bakdest is *NOT* a directory or you do not have write permission."
fi
# End of backup script
echo "\n\n================================="
echo " - Backup Complete, THANK YOU :-]"
Run Code Online (Sandbox Code Playgroud)
在 shell 中一切正常,但是当它作为 cron 作业执行时,它根本不会 scp (但会创建备份)。是的,我有一个空的释义。不明白为什么它不起作用。
问题是您可能ssh-agent
在交互式环境中运行但不在 cron 中运行,并且您的 ssh 密钥文件名与默认文件名不同。
要解决此问题,您可以在 scp 命令行中明确指定 ssh 密钥,即,scp -i $SSH_KEY_FILENAME
或~/.ssh/config
为您的主机指定适当的条目,即:
Host backuphost
IdentityFile SSH_KEY_FILENAME
Run Code Online (Sandbox Code Playgroud)
要测试您的脚本,您可以尝试运行它,通过env -i /path/to/your/script
它应该重置您的环境并模拟 cron 环境。
归档时间: |
|
查看次数: |
11797 次 |
最近记录: |