Нещодавно мені довелося змінити файлову систему мого Mac з збереження регістру на повністю чутливу до регістру. Я зробив це, використовуючи CCC і скопіювавши дані на інший диск, потім повернувшись до новоформатованого основного диска.
Тепер я хотів зробити резервну копію Time Machine на моєму старому диску Time Machine, розміщеному на моєму базі даних 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 "назад", тобто з файлів листів вниз до каталогів, але для цього немає жодного варіанту.