![使用 cron/rsync 备份 Ubuntu 服务器:恢复大文件的问题](https://linux22.com/image/636355/%E4%BD%BF%E7%94%A8%20cron%2Frsync%20%E5%A4%87%E4%BB%BD%20Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9A%E6%81%A2%E5%A4%8D%E5%A4%A7%E6%96%87%E4%BB%B6%E7%9A%84%E9%97%AE%E9%A2%98.png)
我目前有一个专用的 Ubuntu 备份服务器,它每天都会从挂起状态唤醒(使用 rtcwake)。5 分钟后,cron BASH 作业启动,使用 rsync 从各个网络位置提取文件。如果此 BASH 脚本完成,它所做的最后一件事是让服务器重新进入休眠状态,直到第二天(备份作业再次开始运行前 5 分钟 - 您明白了!)。
有一个额外的 cron 作业在晚上 10:45 运行,以“清理”任何正在运行的脚本/rsync 进程,然后暂停机器直到第二天。
我的问题/疑问是:机器处于慢速链接(802.11n 无线)上,并且必须同步一些相当大的媒体文件。我正在使用类似这样的 rsync 命令:
rsync -aPvz -e ssh --itemize-changes --modify-window=60 --exclude 'thumbs.db' /source/ /destination/
并且,如果 rsync 无法在服务器唤醒期间完成,我假设(因为 -P)它会尝试从中断的地方继续。
实际发生的情况是,我最终在目录中得到了同一个文件的多个部分副本,但复制从未完成。
例如:
.BigFile.mkv.EJtNSS (4.1GB)
.BigFile.mkv.KSUStW (3.7GB)
.BigFile.mkv.LSewSA (4.3GB)
以前有人遇到过类似的情况吗?如果有软件可以完成类似的工作(包括处理睡眠/唤醒),我很乐意将其全部更改。我是 BASH 脚本的新手,但愿意尝试任何建议。
干杯,Loz
答案1
添加--inplace
将对大文件有很大帮助。由于不使用临时文件,因此它可以更快地在 rsync 失败或终止后恢复。
答案2
从您的症状来看,同步尝试很可能由于链接速度慢和随后的额外同步终止而未完成。在这种情况下,--inplace
该选项实际上是最糟糕的选项,因为它不是为网络受限的情况而设计的。引用该--inplace
选项:
警告:文件的数据在传输过程中将处于不一致状态(如果传输中断,则可能)...
你可能想要查看另一篇文章使用 rsync 同步非常大的文件。(提示:)此外,您指定的选项(includes )没有拾取现有的部分文件--append
,这很奇怪。目前还没有足够的信息来确定原因,但可以通过更详细的选项(add more )进行检查。--partial
-P
--partial
-v