我想使用 rsync 将文件从 Windows 驱动器复制到外部 HDD,使用以下命令:
rsync -azv --progress --exclude-from '/home/mint/exclude.txt' '/media/mint/OS/' '/media/mint/external_hdd/C_drive_backup/'
我exclude.txt
有 Windows、Program Files 和 ProgramData 文件夹,因为我不需要它们。所以我启动了上面给出的命令并进入睡眠状态。当我醒来时,我得到的是:
sent 169,748,362,821 bytes received 3,982,112 bytes 16,898,347.01 bytes/sec
total size is 193,085,110,161 speedup is 1.14
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
那么我应该担心某些东西没有被复制吗?如果我使用该命令du -hs /media/mint/OS/* | sort -h
并计算应该获得的总大小,则约为 187 GB(与 rsync 以字节到千兆字节为单位的输出相比:169,748,362,821
-> ~158GB
. 193,085,110,161
-> ~179GB
.)
我可以查看哪些文件/文件夹没有被复制吗?如果向上滚动,我可以看到最后 200 行,所有这些都已 100% 完成。
我应该再次复制文件吗?或者有没有办法比较外部硬盘和 Windows 驱动器上的文件?
答案1
如果您尚未保存 的整个输出rsync
,则查找未复制内容的唯一方法是运行另一次遍历进行比较。您不妨再次运行 rsync:它的重点不是传输已经传输的内容。不要传递-v
参数,这样你就不会被无聊的输出压垮。
rsync -aq … 2>rsync.err
(您可以使用rsync -anq …
比较而不传输,但如果您刚刚制作了副本,它不会再次复制任何内容,因此-n
在这种情况下没有任何区别。)
答案2
如果源或目标均未更改,则可以选择rsync
使用交换机再次运行-n
,以查看在不复制数据的情况下将传输哪些内容。添加-q
将抑制常规输出,仅显示无法传输的文件。
rsync -azvqn --exclude-from '/home/mint/exclude.txt' '/media/mint/OS/' '/media/mint/external_hdd/C_drive_backup/'
答案3
当我遇到完全相同的错误时(将文件夹从远程 ubuntu 服务器复制到本地 ubuntu 电脑时),我可以通过将源位置更改为根目录(使其不那么深)轻松解决此问题。
如果这还不能解决问题,下一步就是选择尽可能浅的目标位置。