使用 USB 驱动器进行备份时rscync
,我有时会收到一个或另一个文件的错误消息
rsync: [receiver] write failed on (FILENAME) : No space left on device (28)
rsync: [sender] write error: Connection reset by peer (104)
我正在使用命令
rsync -ra -T /tmp --delete FROM_DIR TO_DIR --info=del
这很奇怪,因为 USB 存储棒的容量为 235 GB,其中 79 GB 可用。备份的数据总大小约为 100 GB,每个文件小于 300 MB,大多数文件约为 3-5 MB。在备份过程中,大多数文件在原始文件和备份文件之间没有变化;只有几十个文件实际上需要更新,但当然,在这种情况下 rsync 可能总是写入所有文件(因为备份不是通过网络完成的)。
此类错误消息可以通过我的设置来解释吗,还是我必须假设 USB 记忆棒有故障?
更新:
备份的源位于外部硬盘上(即 rsync 将一些目录从一个外部磁盘复制到备份设备)。
只有当备份设备是这个特定的 USB 棒时才会出现错误。当我使用另一个外部硬盘(有更多可用空间)进行备份时,从未出现过写入错误。
由于所有其他参数都相同(源磁盘、临时文件磁盘),唯一的“真正”区别是,出现问题较少的设备恰好是 USB 设备,并且它的可用空间比其他备份设备(硬盘、SSD)少得多。
我想知道 USB 驱动器中的可用空间量是否可以解释该错误(以及原因),或者我是否需要假设 USB 驱动器有故障(我该如何检查?)。
更新2:
我对 USB 的质量做了以下基本检查:
运行 Windows 实用程序
CHKDSK ... /r
运行外部实用程序假闪现测试在非破坏性模式下。在此模式下,它会计算 USB 驱动器报告的可用空间(与我之前得到的大致相同),然后创建一个与此大小完全相同的文件,从而填满驱动器。
两次测试都很顺利,没有出现错误。由此,我倾向于得出结论,rsync
操作方式存在问题,这使得目标驱动器上的可用空间必须比单个文件占用的空间大得多。
答案1
我遇到了同样的问题,目标目录有足够的空间,但我会收到“设备上没有剩余空间”的消息。原来 rsync 先将文件复制到其他地方,然后将其移动到目标目录。要更改此行为,请使用
--inplace
。根据https://download.samba.org/pub/rsync/rsync.html“当需要更新文件数据时,此选项会改变 rsync 传输文件的方式:rsync 不会采用默认方法,即创建文件的新副本并在完成后将其移动到位,而是将更新的数据直接写入目标文件。”
rsync --inplace source destination
遗憾的是 rsync 的开发人员没有在消息中包含分区名称。许多 rsync 用户都被这个非常模糊的消息所困扰。