Как сделать резервную копию через rsync на удаленном компьютере, сохраняя разрешения и права собственности?

Диск A – 2 ТБ в шкафу у себя дома.

Привод B – 2 ТБ в моем офисе на работе.

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

Проблема, с которой я сталкиваюсь, заключается в том, что у нескольких пользователей есть вещи на A

У меня есть root run rsync -avz от A до $MYNAME:B

Корень, безусловно, может читать все на A , но не имеет разрешения на запись материала не $MYNAME на B

Как я должен это делать? Должен ли я иметь секретный ключ без пароля в A который записывается в root на B ? Это кажется очень опасным.

Кроме того, я бы предпочел использовать rsnapshot, но похоже, что они требуют, чтобы я рисовал из B в A используя секретный ключ без пароля для учетной записи root, на которую я так напуган.

  • Вопросы об использовании ssh и о том, как они относятся к пользователям
  • Запуск удаленного GUI-приложения через SSH в качестве стандартного пользователя, не являющегося администратором
  • Можно ли включить / отключить SSH с помощью cron
  • легкое решение для резервного копирования на основе диска
  • Двойная переадресация портов - SSH
  • Как мне начать X после ssh'ing в удаленную коробку?
  • Единственный источник для обоих .ssh / config и / etc / hosts
  • Git запрашивает пароль при использовании URL SSH, ssh не
  • 3 Solutions collect form web for “Как сделать резервную копию через rsync на удаленном компьютере, сохраняя разрешения и права собственности?”

    Если он предназначен как резервная копия (я смотрю на тег), а не как удаленную копию рабочего каталога, вы должны рассмотреть возможность использования таких инструментов, как dar или good old tar . Если какой-то важный файл удаляется, и вы его не заметите, у вас не будет возможности восстановить его после недельной синхронизации.

    Второе преимущество заключается в том, что использование tar / dar позволит вам сохранить права собственности на файлы.

    И третий – вы будете экономить полосу пропускания, потому что вы можете сжимать контент.

    Существует --fake-super которая хранит атрибуты, которые нельзя установить в расширенных атрибутах (что означает, что целевая FS должна поддерживать расширенные атрибуты).

    Чтобы проверить поддержку расширенных атрибутов, вы можете сделать это с помощью setfattr или rsync. Затем он демонстрирует, как это работает:

     ~$ rsync --fake-super /bin/ls . ~$ getfattr -dm- ./ls # file: ./ls user.rsync.%stat="100755 0,0 0:0" 

    Обратите внимание: -a не сохраняет все, вам могут понадобиться -H, -A, -X, -numeric-ids.

    Я знаю, что ваш вопрос касается rsync, но это может быть полезно в отношении резервных копий. Это примерно так, как я делаю свои резервные копии вне офиса.

    Альтернативный Rdiff-резерв на основе Rsync

    Возможно, стоит попробовать резервное копирование Rdiff .

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

    В качестве бонуса он также предоставляет дифференциальные резервные копии, поэтому вы можете вернуться «назад во времени». Однако rdiff-backup может работать медленнее из-за характера дифференциальных резервных копий.

    О ключах SSH и безопасности

    Как я должен это делать? Должен ли я иметь секретный ключ без пароля в A, который записывается в root на B? Это кажется очень опасным.

    Если вы боитесь этого, что является разумной вещью, чтобы быть здесь, может быть полезно следующее. Подготовьте следующее в одной строке с открытым ключом, который вы настраиваете на машине, которую вы хотите создать резервную копию ( /root/.ssh/authorized_keys ):

     command="rdiff-backup --server --restrict-read-only /",from="hostname.or.ip.address.to.allow",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA.... and the rest of your key in the same line. 

    Это пример использования ключа RSA. Измените его на свои нужды.

    При желании, настройте SSH-демона для приема только ключей с forced-commands для root . В sshd_config установите PermitRootLogin forced-commands-only .

    Это обеспечивает некоторую безопасность:

    • Forced command login только для root, в этом случае выполняется rdiff-backup в режиме только для чтения.
    • Разрешает только подключение из определенного источника (хоста).
    • Не разрешено использование портов TCP и X.
    • Нет.

    Однако,

    • Возможные уязвимости безопасности в Rdiff-резервном копировании могут быть использованы.
    • Всегда держите ключи в надежном месте. (Например, исключите их из своей резервной копии!)
    Linux и Unix - лучшая ОС в мире.