![如何让 rsync 删除目标文件夹中已使用 shell glob 在源文件夹中删除的文件?](https://linux22.com/image/1176513/%E5%A6%82%E4%BD%95%E8%AE%A9%20rsync%20%E5%88%A0%E9%99%A4%E7%9B%AE%E6%A0%87%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E5%B7%B2%E4%BD%BF%E7%94%A8%20shell%20glob%20%E5%9C%A8%E6%BA%90%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E5%88%A0%E9%99%A4%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在尝试定期将文件从多个来源收集到单个文件目标中。为了保存副本,我尝试使用 rsync,但遇到了一些麻烦。假设我想从文件夹中复制一些文件:
"/var/log/dir2/*.cert",
"/var/log/dir1",
事实是,假设 /var/log/dir2 包含 2 个证书文件 (file1、file2)。我同步它们一次:
rsync -av /var/log/dir2/*.cert /tmp/dest --delete-before
太好了,现在目标包含 file1.cert 和 file2.cert:
rm /var/log/dir2/file1.cert
再次同步:
rsync -av /var/log/dir2/*.cert /tmp/dest --delete-before
我期望目标目录只包含 file2.cert,即 file1.cert 被删除,就像在源目录中一样,但这并没有发生。为什么会这样?我该如何让它工作?
答案1
delete-before 应该在您同步文件夹而不是单个文件时起作用。
如果你尝试过:
rsync -av /var/log/dir2/ /tmp/dest --delete-before
我想这会按照你预期的方式进行。