Допустим, у меня есть каталог с файлами:
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). Это ожидаемое поведение?
Из rsync(1)
-b, --backup
С этой опцией уже существующие файлы назначения переименовываются при передаче или удалении каждого файла. Вы можете контролировать, куда идет файл резервной копии и какой суффикс (если есть) добавляется, используя --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)