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

rsync и --fake-super - как сохранить атрибуты?

Я пытался отсортировать свои резервные копии, чтобы при восстановлении файлов правильно восстанавливались владельцы / группы и любые другие метаданные. Для тестирования я выполнял резервное копирование с сервера Ubuntu 9.10 (с установленной версией rsync 3.0.6, установленной версией протокола 30) через ssh либо на ноутбук OSX 10.6, либо на сервер Ubuntu 9.10.

Создание резервной копии было выполнено с помощью следующей команды (выполняемой от имени пользователя root):

# rsync -avz --fake-super /var/www/myfolder backupuser@remoteserver.com:/home/backups

При этом не сообщается об ошибках.

Затем я использую следующее, чтобы получить свой тестовый каталог:

# rsync -avz --fake-super backupuser@remoteserver.com:/home/backups/myfolder /tmp

И для каждого файла он сообщает об ошибке:

rsync: failed to write xattr user.rsync.%stat for "/tmp/myfolder/path/to/file": Operation not supported (95)

Первоначально я думал, что это должно быть из-за того, что я выполнял резервное копирование в OSX, поэтому я попытался снова выполнить резервное копирование на сервер Ubuntu - только чтобы получить ту же ошибку при восстановлении файлов. Я погуглил и просмотрел справочную страницу для rsync, но ничего не нашел.

Мой локальный сервер Ubuntu использует ext3, удаленный сервер Ubuntu ext4, а на Mac есть HFS

Вы делаете по крайней мере одну вещь неправильно.

Прежде всего, вы используете --fake-super не на той стороне соединения. Позвольте мне процитировать справочную страницу rsync.

Параметр --fake-super влияет только на сторону, на которой он используется. Чтобы воздействовать на удаленную сторону подключения удаленной оболочки, укажите путь rsync:

rsync -av --rsync-path = "rsync --fake-super" / SRC / хост: / dest /

Что вы делаете, так это запускаете --fake-super на стороне соединения, где вы в любом случае уже являетесь root.

Часть о «не удалось записать xattr user.rsync.% Stat для» связана с тем, что файловая система, используемая с --fake-super, не была смонтирована с флагом user_xattr. Эта опция монтирования должна действовать на стороне соединения, где вы используете --fake-super, который в вашем случае будет "remoteserver.com".

Подводя итог, это команды, которые вы должны были запустить:

# rsync -avz --rsync-path="rsync --fake-super" /var/www/myfolder backupuser@remoteserver.com:/home/backups
# rsync -avz --rsync-path="rsync --fake-super" backupuser@remoteserver.com:/home/backups/myfolder /tmp

... с опцией монтирования user_xattr, действующей на remoteserver.com