我想定期将磁盘上的文件备份到备份服务器。由于我有很多文件(数百万),我想使用 rsync,这样只发送差异部分。
从 Ubuntu 18.04 终端,这将产生文件输出:
rsync -av /Disk2/ 192.168.1.80:/mnt/jjg-z2/39x-disk2/ &> /home/john/Desktop/nightly_disk2_logs.txt
但是当我使用时crontab -e
,对于每小时的 16 分钟标记(进行测试)
16 * * * * rsync -av /Disk2/ 192.168.1.80:/mnt/jjg-z2/39x-disk2/ &> /home/john/Desktop
我在桌面上没有看到此文件的输出。在评论中,steeldriver 建议修复问题 1。现在crontab -e
看起来像:
SHELL=/bin/bash
52 * * * * rsync -av /Disk2/ 192.168.1.80:/mnt/jjg-14TB-z2/3970x-disk2/ &> /home/john/Desktop/nightly_disk2_logs.txt
问题 2:现在我在文件中有输出,但 rsync 有权限问题。crontab 的 SSH 密钥环境是否与终端的环境不同?以下是文件中的输出:
Permission denied, please try again.
Permission denied, please try again.
[email protected]: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(235) [sender=3.1.2]
答案1
YouTube描述该过程。
我的要点:
- ssh 密钥上没有密码
- 在 crontab -e 的第一行添加 SHELL=/bin/bash
- &> /home/john/Desktop/backup_disk2_logs.txt 创建一个日志文件以供查看
我的 crontab -e 看起来像:
SHELL=/bin/bash
00 * * * * rsync -av /Disk2/ 192.168.1.80:/mnt/jjg-z2/disk2/ &> /home/john/Desktop/disk2_logs.txt