Допустим, у меня есть каталог с файлами:
a b c d
Итак, я копирую с помощью rsync:
rsync -av --delete -P --backup --backup-dir=sample-$(date +%a-%H%M) ../sample /backups
Я получаю в /backup/sample:
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 d
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 c
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 b
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 a
Но если я создам каталог:
a b c d newdir
Я получаю только в /backup/sample:
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 d
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 c
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 b
-rw-r--r-- 1 sergio sergio 0 feb 17 18:31 a
drwxr-xr-x 2 sergio sergio 8192 feb 17 18:52 newdir
Однако если я удалю файл:
/backups
├── sample
│ ├── a
│ ├── b
│ ├── c
│ └── newdir
└── sample-sáb-1855
└── sample
└── d
Итак, почему rsync не создает 'sample-date...' в первой модификации (создание newdir). Это ожидаемое поведение?
решение1
Отrsync(1)
-b, --резервное копирование
С этой опцией,существующие файлы назначенияпереименовываются по мере передачи или удаления каждого файла. Вы можете контролировать, куда отправляется файл резервной копии и какой (если есть) суффикс добавляется, используя--backup-dirи--суффикспараметры.
В первые два раза переносятся только новые файлы, поэтому нет необходимости создавать резервные копии.
При третьем вызове файл sample/d
удаляется, и теперь опция --backup
сообщает rsync создать резервную копию sample/d
. Эта резервная копия создается в каталоге резервных копий /backups
+ sample-$(date +%a-%H%M)
.
То же самое произойдет, если вы измените любой из существующих файлов. Например, изменение файла sample/a
приведет к созданию резервной копии a
в резервной директории /backups/sample-$(date +%a-%H%M)
.
Если вы хотите создать версионную резервную копию, вам лучше указать другой целевой каталог при каждом запуске rsync.
rsync -av --delete -P ../sample /backups/sample-$(date +%a-%H%M)