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

rsync в режиме демона: сохранить абсолютную структуру каталогов

Я пытаюсь сделать резервную копию некоторых папок с помощью rsync, запущенного в режиме демона. Обычно клиент запускает эту команду:

   rsync --delete -avz -R -e "ssh -i ${KEY}" ${SERVER}::${MODULE} {DST_DIR}

у сервера есть открытый ключ в его файле authorized_keys:

    command="rsync --server --daemon --config /root/rsync.conf"

и вот файл rsync.conf, содержащий папки, для которых я хочу создать резервную копию:

    uid=0
    gid=0
    read only = true
    use chroot = true
    [backup]
    path = /root
    path = /etc

Проблема здесь в том, что копируется содержимое этих папок, а не их абсолютный путь. Я хотел бы / etc / etc_content и / root / root_content в моем $ {DST_DIR}, и я получаю содержимое / etc (я полагаю, сначала синхронизируется / root, а затем / etc, которые удаляют / root-содержимое ... Ой).

Я почти уверен, что есть способ заставить rsync сохранять абсолютный путь. Я безуспешно пытался использовать параметр -R. Я также пробовал без использования chroot.

Как я могу пройти через это?

Большое спасибо

Вы правы с "-Р" возможность использовать относительные пути, но это работает немного иначе. В $ {МОДУЛЬ} экспортирует точно ту часть файловой системы сервера rsync, которая определена "дорожка" параметр.

У тебя должен быть только один "дорожка" параметр на "модуль" раздел определен. Это объясняет, почему вы можете видеть содержимое / root сначала и / etc позже, поскольку оно кажется перезаписанным, если указано несколько параметров пути.

Я бы попытался определить модуль для каталога, который я хочу сделать резервную копию

uid=0
gid=0
read only = true
use chroot = true

[root]
path = /root

[etc]
path = /etc

а затем вызовите rsync для всех этих модулей

for MODULE in root etc; do
  rsync -avzR $SERVER::$MODULE $DST_DIR/$MODULE
done

Или я бы экспортировал более широкую часть файловой системы сервера с одним модульным разделом

uid=0
gid=0
read only = true
use chroot = true

[root]
path = /

И резервные копии необходимых каталогов

rsync -avzR $SERVER::$MODULE/root  $SERVER::$MODULE/etc $DST_DIR

Оба способа сохранят исходную / абсолютную структуру каталогов, которую вы запрашивали.

Я нашел способ с опциями включения; мой файл rsync.conf теперь выглядит так:

    uid=0
    gid=0
    read only = true
    use chroot = true
    [backup]
    path = /
    include /etc/*** /root/*** /usr/local/etc/***
    exclude /***

Затем я могу получить папки с их абсолютным путем, но появляется другая проблема:

Проблема здесь в том, что синхронизация работает только для включенных каталогов непосредственно под / aka / etc / * и / root / * и не работает для / usr / local / etc / *

Та же проблема возникает, когда я пытаюсь использовать ключевое слово include from и заполнять эти папки в указанный файл included_from.

Я в отчаянии; Либо это невозможно выполнить с помощью rsync, либо мне не хватает чего-то очевидного? man объяснение rsync довольно жесткое. dsumsky, спасибо за ваш ответ, и я думаю, что все-таки должен принять ваше решение.