У меня есть исходный каталог, который я периодически синхронизирую с целью, используя rsync:
rsync --bwlimit=1600 --recursive --times
--omit-dir-times --copy-links --modify-window=30
--inplace --delete-before --progress --stats --whole-file
--itemize-changes --human-readable ./ /media/0123-4567/
Мишень СМИ просто правильный размер для синхронизации: целью является 1000 MB раздел, источник имеет 990 МБ файлов; синхронизация от источника до пустой цели работает нормально.
Проблема заключается в том, что я синхронизируюсь с целью, которая содержит более старую версию: некоторые из существующих исходных файлов меньше в текущей версии, а некоторые новые добавляются. Общий размер остается 990 МБ; но rsync, похоже, выбрал стратегию: «сначала скопируйте новые файлы, а затем обновите существующие», первая часть не будет работать, потому что пространство, которое должно быть освобождено с помощью обновления, еще не создано.
version 1 version 2
files not changed: 800 MB 800 MB
new files in v2: 0 MB 80 MB
files changed between versions: 190 MB 110 MB
total 990 MB 990 MB
Другими словами, как я могу заставить rsync сначала обновить цель (что в моем случае освободит место), а затем добавить новые файлы?
До сих пор я обходил это, имея два отдельных вызова, различающихся только по этому параметру:
rsync --existing [...]
rsync --ignore-existing [...]
Это сначала обновит существующие файлы, а потом скопирует новые; Есть ли способ сделать это с помощью одной команды?