Файлы не удаляются с помощью rsync --delete - PullRequest
1 голос
/ 04 июля 2019

rsync - удаление не работает, если ввод для файлов дается 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-files выводит имя отдельного файла, а не каталог, поэтому удаленные файлы не известны конечному концу. Следовательно, я попытался

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), поэтому он не работает должным образом.

Мне нужно, чтобы оба хранилища были синхронизированы должным образом.

...