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

Как обрезать пути к резервным копиям в rsnapshot

Я не уверен, что заголовок действительно правильный. У меня есть строка в моем rsnapshot.conf

backup  root@123.123.123.123:/mnt/rsnapshot/      srv01/

Итак, rsnapshot создает режиссеров RSNAPSHOT_ROOT/daily.0/srv01/mnt/rsnapshot и помещает туда файлы резервных копий. Для меня /mnt/rsnapshot часть не нужна; Я бы предпочел, чтобы мои резервные копии файлов были прямо в RSNAPSHOT_ROOT/daily.0/srv01/. Есть ли способ добиться этого?

rsnapshot использует --relative флаг rsync чтобы сохранить информацию о пути. В большинстве случаев вы, вероятно, захотите сохранить (по крайней мере часть) эту информацию, особенно при резервном копировании локальных каталогов. Однако в вашем случае вам действительно не нужно сохранять префикс ведущего пути.

С достаточно свежими версиями rsync (v.2.6.7 +), вы можете явно управлять частью префикса пути, который --relative сохраняет, вставив ./ в желаемой точке отсечения. В ./ эффективно не изменяет имя пути, но сообщает rsync что ты хочешь --relative чтобы сохранить только ту часть пути, которая следует за ./. Поскольку вы хотите отрезать весь путь, вы просто добавляете ./ в конец исходного пути, например:

backup  root@123.123.123.123:/mnt/rsnapshot/./  srv01/

РЕДАКТИРОВАТЬ

Ладно, похоже, ./ уловка в этом случае не сработает, так как rsnapshot снимает следы /. Вместо этого вы можете отключить --relative вариант для каждой точки резервного копирования, добавив четвертый столбец в свой backup строка, например:

backup  root@123.123.123.123:/mnt/rsnapshot/  srv01/  +rsync_long_args=--no-relative

В +rsync_long_args говорит rsnapshot добавить к существующим rsync_long_args вариант, только для текущей точки резервного копирования. Добавляя --no-relative к rsync_long_args, вы добьетесь желаемого эффекта выключения --relative.

Первое предложение Стивена использовать ./ действительно работает с rsnapshot, вам просто нужно поставить его дважды:

backup  root@123.123.123.123:/mnt/rsnapshot/././  srv01/

Rsnapshot удалит последнюю косую черту, но первая точка работает для rsync.

Это поведение фактически контролируется rsync --relative флаг. Цитирование руководство по rsync:

-R, --относительный

Используйте относительные пути. Это означает, что на сервер отправляются полные имена путей, указанные в командной строке, а не только последние части имен файлов. Это особенно полезно, если вы хотите отправить несколько разных каталогов одновременно. Например, если вы использовали эту команду:

rsync -av /foo/bar/baz.c remote:/tmp/

... это создаст файл с именем baz.c в / tmp / на удаленном компьютере. Если вместо этого вы использовали

rsync -avR /foo/bar/baz.c remote:/tmp/

тогда на удаленном компьютере будет создан файл с именем /tmp/foo/bar/baz.c, с сохранением его полного пути. Эти дополнительные элементы пути называются «подразумеваемыми каталогами» (т.е. каталогами «foo» и «foo / bar» в приведенном выше примере). [...]

Итак, в вашем rsnapshot.conf найдите строку, которая начинается с rsync_long_args. По умолчанию, --delete --numeric-ids --relative --delete-excluded должен присутствовать. Удаление --relative вариант, должен привести к желаемым результатам.