Вопрос: Как обрезать пути резервного копирования в rsnapshot


Я не уверен, что заголовок действительно coorect. У меня есть строка в моем файле 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/, Есть ли способ достичь этого?


5
2018-01-27 23:25


Источник




Ответы:


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

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

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

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

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

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,


10
2018-01-28 02:58



в теории, и согласно man-странице, это должно работать, но это не так - у меня все еще есть /mnt/rsnapshot в моих резервных копиях. Любая идея, что может быть неправильным? - andreas-h
возможно rsnapshot«санирует» исходный путь до передачи его в rsync, снятие дополнительных ./, Проверьте файл журнала /var/log/rsnapshot.log, он должен показать вам, что именно rsync команды, которые он выдает. - Steven Monday
Кажется, что rsnapshot отрезал трейлинг /, так что он rsync с дорожкой root@123.123.123.123:/mnt/rsnapshot/. Есть ли что-нибудь, что я могу сделать без отключения --relative? - andreas-h
@ andreas-h: Проверьте EDIT. Надеюсь, это решит это для вас. - Steven Monday


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

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

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


4
2018-03-02 17:40





Такое поведение фактически контролируется 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 вариант, должен привести к желаемым результатам.


3
2018-01-28 00:08