rsync --delete не работает
ОС - Debian 10, rsync версии 3.1.3. Я запускаю rsync вот так:
time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
Это работает для копирования файлов, но не удаляет ничего, что было удалено. (Либо полностью удален из src, либо, в моем случае, удален из filelist.txt) Это огромная проблема. Единственный обходной путь, который я нашел, - просто уничтожить весь пункт назначения и просто скопировать все заново, но это занимает огромное количество времени и в основном сводит на нет смысл использования rsync в первую очередь.
Это ошибка? Как заставить rsync работать правильно, соблюдая флаг --delete, как и положено?
Редактировать:
Например:
- Если filelist.txt содержит «foo», тогда / path / to / dest будет содержать «foo».
- Если filelist.txt содержит «foo» и «bar», тогда / path / to / dest будет содержать «foo» и «bar».
- Если filelist.txt содержит «foo», «bar» и «bat», тогда / path / to / dest будет содержать «foo», «bar» и «bat».
- и т.д
Предположим, что "foo" "bar" "bat" и т. Д. Являются каталогами.
Ответы
Вам нужно указать rsync удалить недостающие аргументы:
rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
- Таким образом, если вы удалите каталог,
fooон также будет удален/path/to/destс--delete-missing-args. fooвсе еще нужно указать вfilelist.txt.--deleteаргумент требуется , чтобы Rsync удалять файлы вfooпапке
Нет. rsyncНе удаляет файлы / каталоги только потому, что список файлов не содержит этих файлов или он пуст.
если вы его используете, --files-fromон попытается синхронизировать только перечисленные файлы от источника к месту назначения.
Он не удалит файлы только потому, что они отсутствуют в переданном списке файлов --files-from.
Для работы --delete вам нужно использовать фактический исходный путь .. вот так
rsync -ar --delete path/to/src path/to/destination