我rsync
在 macOS 10.14.6 (Mojave) 上使用(2.6.9,协议版本 29)来备份包含视频的磁盘。源有 999GB 容量,75GB 可用,备份有 1TB 容量。命令是:
$ rsync -avxW --progress /Volumes/Video/ /Volumes/Video\ backup/
building file list ...
40989 files to consider
.DS_Store
26628 100% 0.00kB/s 0:00:00 (xfer#1, to-check=40987/40989)
.DocumentRevisions-V100/
.Spotlight-V100/
rsync: failed to set times on "/Volumes/Video backup/.Spotlight-V100": Operation not permitted (1)
.fseventsd/
iMovie Library.imovielibrary/movie/Original Media/
iMovie Library.imovielibrary/movie/Original Media/DSC_0004.mov
rsync: writefd_unbuffered failed to write 32768 bytes [sender]: Broken pipe (32)
rsync: write failed on "/Volumes/Video backup/iMovie Library.imovielibrary/movie/Original Media/DSC_0004.mov": No space left on device (28)
rsync error: error in file IO (code 11) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/receiver.c(268) [receiver=2.6.9]
rsync: connection unexpectedly closed (76 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/io.c(453) [sender=2.6.9]
备份磁盘已满,因为rsync
没有删除几个现在从原始文件中丢失的文件。我检查了该选项--delete-before
是否为默认选项,并且我还尝试--delete
删除无关文件,但使用同一文件时遇到了相同的错误。
如何制作完美的磁盘克隆rsync
?
由于缺乏一个简洁的解决方案,我用 Python 编写了一个 hack 来遍历目标并删除源中不存在的文件和目录。
确保您不会意外交换源和目标,否则您将丢失原始文件。顺序同
rsync
:先源后目标。默认情况下,代码会在删除前五个路径之前提示确认,因此您可以验证您没有删除源。它删除目标中作为源中符号链接的文件。
用于:
然后您可以运行
rsync
,例如如下(并-a
保留符号链接):这是代码
rsync_pre_process.py
: