无法使用rsync --delete删除文件

时间:2019-07-04 07:29:12

标签: bash git rsync git-ls-files

rsync --delete如果git ls-files提供文件输入,则无法正常工作

这用于同步两个git存储库,其中一个是原始版本,另一个是rsync备份版本。

我希望orig_repo的某些子目录中的文件在sync_repo中同步,包括在orig_repo中删除的文件也要在sync_repo中删除。

以下代码同步两个目录,唯一的问题是它不会删除目标端不再存在于源目录中的文件。

git ls-files -z sub_dir1/ sub_dir2/ | rsync --omit-dir-times --chmod=u+w --files-from=- -av0 source_repo/ destination_repo/

我尝试添加--delete标志,如下所示:

git ls-files -z sub_dir1/ sub_dir2/ | rsync --omit-dir-times --chmod=u+w --files-from=- -av0 --delete source_repo/ destination_repo/

它没有用。 原因是,当我们将文件删除为: git rm file1

git ls文件输出单个文件名而不是目录,因此目标端不知道已删除的文件。 因此,我尝试了

find sub_dir1/ -type d -print | rsync --omit-dir-times --chmod=u+w --files-from=- -av0 --delete source_repo/ destination_repo/

它将所有文件同步到destination_repo中,但不同步到特定的子目录(sub_dir1,sub_dir2)中,因此无法按预期工作。

我需要两个存储库都应该正确同步。

0 个答案:

没有答案