我想要将一个文件夹从一台服务器 rsync 到另一台服务器。
但是rsync同步失败:
$ rsync -zr --compress-level=9 --delete /var/www/mywebsite/current/web/js [email protected]:/srv/data2_http
rsync: write failed on "/srv/data2_http/js/8814c77.js": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(322) [receiver=3.0.9]
rsync: connection unexpectedly closed (21747 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
但我有足够的空间!
$ du -h /var/www/mywebsite/current/web/js
2.4M /var/www/mywebsite/current/web/js
df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 5.0G 3.0G 1.8G 64% /
/dev/root 5.0G 3.0G 1.8G 64% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 395M 132K 395M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 24K 16K 8.0K 67% /var/gandi
tmpfs 24K 16K 8.0K 67% /var/gandi
tmpfs 789M 0 789M 0% /run/shm
/dev/xvdb 202G 168G 25G 88% /srv/data2_http
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
rootfs 327680 67666 260014 21% /
/dev/root 327680 67666 260014 21% /
devtmpfs 504593 319 504274 1% /dev
tmpfs 504848 224 504624 1% /run
tmpfs 504848 2 504846 1% /run/lock
tmpfs 504848 5 504843 1% /var/gandi
tmpfs 504848 5 504843 1% /var/gandi
tmpfs 504848 2 504846 1% /run/shm
/dev/xvdb 13434880 2152940 11281940 17% /srv/data2_http
答案1
我遇到了同样的问题,目标目录有足够的空间,但我会收到“设备上没有剩余空间”的消息。原来 rsync 先将文件复制到其他地方,然后将其移动到目标目录。要更改此行为,请使用--inplace
。
根据https://download.samba.org/pub/rsync/rsync.html “当需要更新文件数据时,此选项会改变 rsync 传输文件的方式:rsync 不会采用默认方法,即创建文件的新副本并在完成后将其移动到位,而是将更新的数据直接写入目标文件。”
rsync --inplace source destination
答案2
rsync
首先将内容传输到目标文件夹中的临时文件;如果成功,则将临时文件重命名为目标文件。如果传输失败,则删除临时文件。一个 2GB 的文件会填满你的目标空间,rsync
删除它之后,空间就会再次可用。 因此,rsync
可以欺骗你对空间问题的调查。
答案3
1)检查目标空间。
ssh [email protected]
df -h /srv/data2_http
2) 尝试 rsync 的 --inplace 选项。它可以防止使用更多空间,但在传输过程中会导致目标文件不一致。
答案4
我们打电话给托管服务提供商,并在服务器正常运行时进行了一些测试。但什么也没发生。
最后,我刚刚重启了服务器,现在一切正常了。我之前没有这样做,因为这是一台生产服务器