使用 rsync 将目录复制到外部驱动器时出现 No space left on device 错误

使用 rsync 将目录复制到外部驱动器时出现 No space left on device 错误

当我尝试将主目录镜像到外部驱动器时,我遇到了 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/

相关内容