Как скопировать том Time Machine на другой диск с помощью rsync, сохраняя ACL?

9

Недавно мне пришлось поменять файловую систему моего Mac с сохранения регистра на полностью регистрозависимый. Я сделал это, используя CCC и копируя данные на другой диск, а затем возвращаясь к вновь отформатированному основному диску.

Теперь я хотел сделать резервную копию Time Machine на моем старом диске Time Machine, который размещен на моем NAS-устройстве на базе FreeBSD, экспортированном через AFP. Тем не менее, я получаю сообщение об ошибке, что файловые системы не совпадают, так как Time Machine по-прежнему не учитывает регистр символов. На этот раз я не могу использовать CCC, поскольку он не поддерживает копирование на уровне файлов для томов Time Machine.

Естественно, я выбрал rsync, но возникает проблема - если я запускаю его с:

/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/

он начинает жаловаться, как только попадает в Backups.backupdb/<machinename>папку, с failed to set permissions, operation not permitted. Проблема здесь заключается в копировании списков ACL, которые довольно ограничены:

 ll -dle /Volumes/Time\ Machine\ Backups/Backups.backupdb/<machinename>/
 drwxr-xr-x@ 19 root  staff  646 Dec 23 09:38 /Volumes/Time Machine Backups/Backups.backupdb/<machinename>/
 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown

Итак, я удалил -Aиз вышеупомянутой команды, и rsync теперь счастливо перемещает ГБ данных.

Увы, я бы тоже хотел сохранить ACL. Это возможно как-то? OS X не имеет getfacl / setfacl, и я хотел бы избежать анализа вывода ls -le. Здесь я вижу решение, как-то сказать rsync применять ACL «назад», то есть от конечных файлов до каталогов, но для этого нет выбора.

Никола Кнежевич
источник
Работает ли rsync на целевом компьютере как пользователь с правами на изменение этих файлов?
harrymc
Это может быть очевидным вопросом, но вы уверены, что поддержка ACL включена в томе назначения? Вы подразумеваете, что копируете на Mac, что должно, но в этом случае он должен просто работать, если пользователь на этом конце не имеет тот же идентификатор пользователя #, что и исходные файлы, и в этом случае вам, вероятно, потребуется установить это, или переключиться на использование root (очевидно, не очень хорошая вещь, но решает проблему с разрешением установки права собственности на кого-то еще).
Том Скотланд
Кроме того, эта указанная учетная запись пользователя должна быть определена для цели, иначе владелец не может быть установлен.
Harrymc

Ответы:

3

Загрузите rsync версии 3, используя Homebrew. Тогда вы можете попробовать опцию "--acls". В Rsync на Mac, похоже, синтаксис командной строки немного отличается от других операционных систем. Возможно, вы захотите взглянуть на эту ссылку: http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/ . Он описывает, как получить rsync 3 и аргументы командной строки, которые он использует.

Я не пользователь OSX, но я создаю резервную копию Mac моей жены на сервере Linux с помощью rsync.

Ленчо Рейес
источник
2

rsync, по крайней мере в OS X 10.4 и последующих, будет передавать атрибуты ACL, если используется опция -E. Смотрите справочную страницу.

neoplop
источник