我正在使用 rsync(centos 上的版本 3.1.0)执行一些备份任务。我开发了一个软件来监控我的 rsync 进程,以使备份配置符合我的业务逻辑。
我的软件启动一些 rsync 进程,并解析 rsync 的输出以发送通知。
我遇到了一些奇怪的事情。
我的目标磁盘已满。我的软件使用以下命令在该磁盘上启动 rsync 备份:
rsync -irlpt --no-perms --stats /src /media/dst/
/media/dst 是安装在 fuseblck(NTFS)中的外部 USB3 硬盘。
/src是一个包含50G字节的图片、电影和一些文本文件的文件夹。
因为这个磁盘已满,所以我希望 rsync 快速退出并返回错误。
但是,rsync 过程需要很长时间。(我在 10 小时后手动停止了它)当我停止它时,我可以读取很多类似这样的跟踪:
rsync: mkstemp "/media/dst/.20160518-130315-underwaterposition-VI_GAPS.pos.DIksdT" failed: No space left on device (28)
对于我来说,此消息是正常的,因为设备上没有剩余空间。
我的问题是:
为什么 rsync 在检测到目标设备上没有剩余空间时不会立即停止?
有没有办法强制这种行为?