当我尝试将主目录镜像到外部驱动器时,我遇到了 rsync 失败的问题。 rsync 调用是(作为普通用户):
rsync -avz --progress --delete-before /home /mnt/st5/
此操作失败并出现以下错误:
home/matt/vms/windows/10/disk.img
40,002,387,968 28% 89.32MB/s 0:17:59 rsync: [receiver] write failed on "/mnt/st5/home/matt/vms/windows/10/disk.img": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(378) [receiver=3.2.3]
rsync: [sender] write error: Broken pipe (32)
此错误似乎表明/home/matt
大于 中的可用空间/mnt/st5
。然而,我不相信情况是这样。我的主目录的大小是(源和目标都是 btrfs 文件系统):
matt@ryzen3950 ~/s/tools> btrfs fi du -s /home/matt
Total Exclusive Set shared Filename
783.83GiB 6.15GiB 760.30GiB /home/matt
目标是 1TB 驱动器:
matt@ryzen3950 ~/s/tools [11]> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sde 8:64 0 931.5G 0 disk
└─sde1 8:65 0 931.5G 0 part /mnt/st5
基于此,我相信我应该能够在剩余约 150GB 可用空间的情况下执行 rsync。
我哪里错了?我的主目录是否比我想象的要大?
答案1
--inplace
按照中所述使用这个服务器错误答案为我工作。 rsync 失败的文件大小disk.img
为 130G,我相信这提供了有关该问题的提示。据我了解,rsync 在目标中创建文件的副本,然后在复制完成后替换现有版本。这意味着目标中可以同时存在文件的两个副本,这可能会导致复制大文件时出现空间问题。--inplace
更改行为,以便不首先创建副本。
新的完整命令是:
rsync -avz --progress --delete-before --inplace /home /mnt/st5/