Как сделать резервную копию через rsync на удаленном компьютере, сохраняя разрешения и права собственности?
Диск A
– 2 ТБ в шкафу у себя дома.
Привод B
– 2 ТБ в моем офисе на работе.
- Запуск задания оболочки на удаленном сервере, закрытие терминала без закрытия задания
- Логин SSH, когда root терпит неудачу, но я уверен, что ввел правильный пароль
- Как запустить автозаполнение без клавиши табуляции?
- Как я могу узнать, какую версию OS X я запускаю из командной строки?
- Обновить OpenSSH Key Exchange (kex) от ssh-dss до?
Я бы хотел, чтобы диск A
был тем, который я использую регулярно, и иметь rsync-зеркало от A
до B
ночное время / в неделю.
Проблема, с которой я сталкиваюсь, заключается в том, что у нескольких пользователей есть вещи на A
У меня есть root run rsync -avz
от A
до $MYNAME:B
Корень, безусловно, может читать все на A
, но не имеет разрешения на запись материала не $MYNAME
на B
Как я должен это делать? Должен ли я иметь секретный ключ без пароля в A
который записывается в root на B
? Это кажется очень опасным.
Кроме того, я бы предпочел использовать rsnapshot, но похоже, что они требуют, чтобы я рисовал из B
в A
используя секретный ключ без пароля для учетной записи root, на которую я так напуган.
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-резервном копировании могут быть использованы.
- Всегда держите ключи в надежном месте. (Например, исключите их из своей резервной копии!)