Назад | Перейти на главную страницу

rsync не создает резервную копию каталога

Допустим, у меня есть каталог с файлами:

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)