我需要将 500GB 外部 SSD 磁盘中的 200GB 复制到 2TB NVMe M2 SSD,该 SSD 有超过 1TB 的可用空间。我的所有其他磁盘和分区也都有大量 GB 的可用空间(当然,除了启动分区)。
然而,当我做 a 时rsync
,我看到了设备上没有剩余空间 (28)大约 20 个文件出现错误:
rsync: [receiver] rsync_xal_set: lsetxattr("/extraHD/TEMP/<some folder>/RECEBIDOS/423___ KWR Designer ___ Neu++ Tuto \#302\#251 Christa JA.eml","user.OECustomProperty") failed: No space left on device (28)
一些事实:
- 该文件夹
RECEBIDOS
有 444 个文件,大小为 465MB,因此没什么特别的。 - 再次运行,
rsync
同样的 20 个文件会出现同样的错误。 - 添加
--inplace
到rsync
不是解决问题(如预期)。 - 尝试单独创建
rsync
文件夹RECEBIDOS
会导致相同文件上出现相同错误(这表明外部 500GB SSD 存在问题),但cp
单个文件确实可以工作。 - 进度完成后,我对每个有问题的文件都进行了检查
diff
,sha1sum
发现它们都是相同的。所以没有损失。
接收 2TB NVMe SSD 的硬件是否出了问题?是否存在错误rsync
?
奇怪的是,Windows 甚至看不到 500GB SSD。但这个rsync
错误似乎指出了接收端的问题。
编辑
根据要求,我添加了两个命令的输出:
$ /usr/bin/df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 16G 24K 16G 1% /dev/shm
tmpfs 6.3G 1.9M 6.3G 1% /run
/dev/nvme1n1p2 40G 13G 25G 34% /
/dev/nvme1n1p1 511M 58M 454M 12% /boot/efi
/dev/nvme1n1p4 165G 55G 102G 36% /backups
/dev/nvme0n1p1 1.8T 1.2T 554G 69% /extraHD
/dev/nvme1n1p3 30G 6.0G 22G 22% /home
tmpfs 16G 4.0K 16G 1% /tmp
tmpfs 3.2G 72K 3.2G 1% /run/user/500
/dev/mapper/key 35G 13G 20G 40% /mnt/key
和
$ /usr/bin/df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 4061241 747 4060494 1% /dev
tmpfs 4066601 7 4066594 1% /dev/shm
tmpfs 819200 1291 817909 1% /run
/dev/nvme1n1p2 2621440 265783 2355657 11% /
/dev/nvme1n1p1 0 0 0 - /boot/efi
/dev/nvme1n1p4 11010048 400638 10609410 4% /backups
/dev/nvme0n1p1 122101760 1183050 120918710 1% /extraHD
/dev/nvme1n1p3 1966080 83116 1882964 5% /home
tmpfs 1048576 36 1048540 1% /tmp
tmpfs 813320 110 813210 1% /run/user/500
/dev/mapper/key 2293760 138583 2155177 7% /mnt/key
答案1
该错误似乎由于尝试同步对于目标文件系统而言过大的 xattrs 而产生。
我在将文件从 btrfs 同步到 ext4 时遇到错误,目录在user.wine.sd
xattr 中的值相当大。
你的问题似乎是user.OECustomProperty
扩展属性对于目标文件系统来说太大。
为了避免此错误,您可以
- 从文件中删除扩展属性(但 Outlook Express 可能会重新创建它)。
- 从您的 rsync 命令中删除该
-X
标志(但您将不会获得任何复制的扩展属性)。 - 将您的文件复制到支持更大扩展属性值的文件系统(而不是 ext4)。