我试图在Debian GNU / Linux下设置一个shell脚本来将目录和子目录备份到通过SSH运行Linux的远程NAS上。 这个连接必须被encryption。
我已经尝试了几种不同的方法涉及rsync rsh等,但没有运气。 我知道如何设置crontab ,但是我需要一个无人值守的脚本(即它不会要求input密码)
任何人都可以帮我吗?
编辑:我现在可以成功login没有密码。
现在的问题是让rsync将/backups/的文件复制到[remote system]:/backups/
它只从/backups/复制一个文件夹到[remote system]:/backups/ 。
编辑:似乎本地系统有一个/备份和一个/备份…我已经尝试/备份时,我应该使用/备份…
最终命令: rsync -avzr -e ssh /backup/ admin@[IP]:/backups/
rsync自2.6.x默认使用ssh传输。 所以只要您的远程NAS rsync支持,它已经被照顾了。
至于无密码的无密码传输,请为您正在运行cron的用户设置基于ssh密钥的身份validation,这应该完成。 这是你如何设置 – http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html
您也可以将此标志传递给rsync以使用密码文件:
–password文件
可以很容易地将文件chmod到400,所以除了你的用户可以读取该文件(和当然的根)
Ssh键同步你说你有这个工作,但我想我仍然会发布的步骤
ssh进入你的NAS
做钥匙
ssh-keygen -t rsa on local machine
然后同步到将要备份的计算机
cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat>>.ssh/authorized_keys'
Rync备份脚本 – 这将为今天做一个备份文件夹,然后sycn昨天文件,这将减lessnetworking上的负载,然后rsync今天将备份。
#!/bin/sh mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username rsync -avz /storage/backups/`date --date=yesterday +\%Y-\%m-\%d`-`date--date=yesterday +\%A`/$host/$username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/ rsync -avz -e ssh /home/username/ /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username/
您还需要一个清理备份的脚本:这将保留一周的备份,我可以确认这在Netgear的ready nas
#!/bin/sh # Definitions sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A) # Delete backups from 7 days ago rm -rf /storage/backups/$sevendaysago
你将需要运行这个脚本来使脚本可以运行
chmod u+x script.sh
在cron中,你只需要通过crontab -e来添加
@daily sh backupscript 1 17 * * * sh dailycleanup