![阻止 rsync 删除正在上传的文件](https://linux22.com/image/584959/%E9%98%BB%E6%AD%A2%20rsync%20%E5%88%A0%E9%99%A4%E6%AD%A3%E5%9C%A8%E4%B8%8A%E4%BC%A0%E7%9A%84%E6%96%87%E4%BB%B6.png)
我有一个脚本,它将从特定目录(带有rsync
)上传文件到服务器,但同时另一个脚本将从服务器中提取文件(也带有rsync
和带有--delete
标志)。
这意味着,当我添加大量文件并rsync
正在上传文件时和这下载脚本也正在运行,一些文件(尚未上传到服务器)被删除。
有什么方法可以防止这种情况发生?我希望我的上传脚本和下载脚本同时工作。
答案1
听起来你正在尝试执行双向同步,在这种情况下,最好使用专门为此设计的工具,例如齐奏。
答案2
使上传工作原子化。例如,您可以执行 rsync 上传到临时目录,并在完成后用 mv 替换工作目录。另一个可以尝试的方法是使用版本控制来管理文件。我推荐 git。
答案3
如果我正确理解了这个问题,你可以简单地排除部分文件下载。这也能确保它们不会被删除。检查--temp-dir
rsync 手册页中的开关,了解如何指定在文件上传时使用的临时目录。
如果你想上传和下载文件同时,那么您将需要创建自己的考虑到该要求的 rsync 版本。