使用 cron/rsync 备份 Ubuntu 服务器:恢复大文件的问题

使用 cron/rsync 备份 Ubuntu 服务器:恢复大文件的问题

我目前有一个专用的 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

相关内容