rsync --delete nie działa

Sep 15 2020

System operacyjny to Debian 10, rsync w wersji 3.1.3. Uruchamiam rsync w ten sposób:

time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest

Działa to w celu skopiowania plików, ale nie usuwa niczego, co zostało usunięte. (Albo całkowicie usunięte z src, albo w moim przypadku usunięte z filelist.txt) To jest ogromny problem. Jedynym rozwiązaniem, jakie znalazłem, jest po prostu nuke całego miejsca docelowego i po prostu skopiowanie wszystkiego od nowa, ale zajmuje to ogromną ilość czasu i zasadniczo neguje sens używania rsync w pierwszej kolejności.

Czy to błąd? Jak sprawić, by rsync działał poprawnie, honorując flagę --delete, tak jak powinna?

Edytować:

Na przykład:

  • Jeśli filelist.txt zawiera „foo”, wtedy / path / to / dest będzie zawierało „foo”.
  • Jeśli filelist.txt zawiera „foo” i „bar”, to / path / to / dest będzie zawierało „foo” i „bar”.
  • Jeśli filelist.txt zawiera „foo”, „bar” i „bat”, wówczas / path / to / dest będzie zawierało „foo”, „bar” i „bat”.
  • itp

Załóżmy, że „foo”, „bar”, „bat” itp. To katalogi.

Odpowiedzi

3 laktak Sep 24 2020 at 14:24

Musisz powiedzieć rsync, aby usunął brakujące argumenty:

rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
  • Więc jeśli usuniesz katalog foo, zostanie on również usunięty za /path/to/destpomocą --delete-missing-args.
  • foonadal musi być wymieniony w filelist.txt.
  • --deleteargumentem jest wymagane, aby umożliwić rsync, aby usunąć pliki z foofolderu
SandeepKothari Sep 28 2020 at 15:16

Nie. rsyncNie usunie plików / katalogów tylko dlatego, że lista plików nie zawiera tych plików lub jest pusta.

jeśli używasz --files-from, spróbuje zsynchronizować tylko wymienione pliki ze źródła do miejsca docelowego.

Nie usunie plików tylko dlatego, że nie ma ich na liście plików przekazanych do --files-from.

Aby --delete działało, musisz użyć rzeczywistej ścieżki źródłowej… w ten sposób

rsync -ar --delete path/to/src path/to/destination