我为我的 Proxmox 主机编写了一个脚本,将其每日备份复制到另一台机器(运行 Windows Server 2019)。
该脚本挂载 CIFS 共享并运行以下 rsync 命令:
rsync -aqzP --delete --delete-excluded /mnt/raid/ /mnt/backups --exclude "*.log"
它运行大约 6 分钟,然后当它尝试复制文件时vzdump-qemu-100-2021_05_16-00_00_03.vma.zst
,它会引发错误:
rsync: [receiver] close failed on "/mnt/backups/backups/dump/.vzdump-qemu-100-2021_05_16-00_00_03.vma.zst.nrDEvQ": Broken pipe (32)
rsync error: error in file IO (code 11) at receiver.c(871) [receiver=3.2.3]
rsync: [sender] write error: Broken pipe (32)
可能是什么问题呢?
在 Windows 机器上,有复制所需的所有空间。
答案1
vzdump-qemu-100-2021_05_16-00_00_03.vma.zst
我会调查一下该文件中 cifs 不喜欢什么。
- 该文件是否在远程卷上创建?它是空的还是部分复制的?
- 远程文件系统或 cifs 协议是否支持该文件的大小?
如果该文件可供 rsync 使用:
- 运行 rsync 的用户是否可以访问该文件(文件权限、文件被另一个进程锁定等)
最后,如果我没有得到结果,我会尝试增加 rsync 详细程度以获取有关错误的更多详细信息:
rsync -aqzPvvvvvvvvvvvvvvvv ...
答案2
我如何解决这个问题:
我发现这篇被遗忘的帖子在 ArchLinux 论坛上,并尝试了解决方案:
这似乎是缓存问题或相关问题。
为了使其正常工作,我只需添加-o fg,noac,lookupcache=none
命令mount
。