%3F.png)
Я не могу понять, что делает флаг -b. Согласно официальной документации:
При использовании этой опции существующие файлы назначения переименовываются при передаче или удалении каждого файла.
Но я не понимаю, что это значит. Как можно переименовать удаляемый файл? Как переименование файлов связано с резервным копированием? После вызова rsync с -b файлы не были переименованы:
rsync --delete -bavh
И когда я прохожу различные руководства, они никогда не используют эту опцию. Так действительно ли она полезна?
В чем будет разница между
rsync --delete -bavh
и
rsync --delete -avh
Также, это может быть бесполезно, но мой вариант использования следующий: я хочу сделать резервную копию моего рабочего стола на смонтированный диск WebDAV. Резервное копирование будет запускаться каждый день в указанное время автоматически.
решение1
Целью данной backup
опции является сохранение копии любых перезаписанных и/или удаленных файлов.
Его можно использовать --backup-dir
для хранения этих файлов в каталоге, отличном от целевого.
Вы можете дополнительно указать суффикс резервной копии с помощью --suffix
опции, которая будет добавлена к имени файла. Без нее файлы, скопированные в указанный backup-dir
каталог, сохранят свои исходные имена. С ней файлы могут быть переименованы и оставаться в исходном каталоге (то есть это backup-dir
не обязательно).
Поэтому при использовании требуется либо backup-dir
, либо .--suffix
backup
решение2
Поигрался с этим. Вот что я узнал.
Используйте --backup и --backup-dir для создания своего рода инкрементной резервной копии.
Допустим, у вас есть этот код:
# test date with a timestamp:
date +%F_%H-%M-%S
2024-03-06_19-48-08
#
SRC=your/cooldir
DST=backups
INCDIR="${DST}/inc_$(date +%F_%H-%M-%S)"
rsync -avh --backup --backup-dir="$INCDIR" "$SRC/" "$DST/"
При первом запуске вы получите backups/cooldir, который является полной резервной копией (зеркальной синхронизацией) вашего /cooldir.
Теперь добавьте файл newfile.txt в ваш/cooldir. Запустите код еще раз. Никакие файлы не были удалены или изменены, поэтому INCDIR не создан.
Теперь удалите ваш /cooldir/newfile.txt. Запустите код снова. Поскольку этот файл был удален и были указаны --backup и --backup-dir, вы получите backups/cooldir, как и раньше (полную резервную копию), но вы также получите каталог backups/inc_2024-03-06_19-57-23. Внутри этого инкрементного каталога вы получите newfile.txt. Он там, потому что был удален.
Вы можете попробовать это снова, создав newfile2.txt, запустить его, а затем при втором запуске просто изменить newfile2.txt (не удалять его). Вы снова получите newfile2.txt в папке backups/inc_xx.
Теперь попробуйте код, но измените эту строку:
INCDIR="${DST}/inc_$(date +%F)"
И снова запустите эти сценарии. В первый раз вы получите newfile.txt в backups/inc_2024-03-06. Во второй раз вы получите и newfile.txt, и newfile2.txt в том же каталоге. Другими словами, --backup и --backup-dir — это не совсем инкрементальное резервное копирование. Это скорее накопление последних изменений/удалений файлов.
Наконец, попробуйте следующее изменение:
rsync -avh --backup "$SRC/" "$DST/"
На этот раз вы получите измененные и удаленные файлы, переименованные с тильдой, например newfile.txt~