Ostatnio musiałem zmienić system plików komputera Mac z przechowywania wielkich i małych liter na pełne. Zrobiłem to, używając CCC i kopiując dane na inny dysk, a następnie wracając na nowo sformatowany dysk główny.
Teraz chciałem wykonać kopię zapasową Time Machine na starym dysku Time Machine, który jest hostowany na moim serwerze NAS opartym na FreeBSD, eksportowanym przez AFP. Jednak pojawia się błąd, że systemy plików nie pasują do siebie, ponieważ Time Machine nadal ma fs bez rozróżniania wielkości liter. Tym razem nie mogę użyć CCC, ponieważ nie obsługuje kopiowania na poziomie plików dla woluminów Time Machine.
Oczywiście poszedłem prosto na rsync, ale to rodzi problem - jeśli uruchomię to z:
/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/
zaczyna narzekać, gdy tylko trafi do Backups.backupdb/<machinename>
folderu failed to set permissions, operation not permitted
. Problem polega na kopiowaniu list ACL, które są dość restrykcyjne:
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
Usunąłem więc -A
powyższe polecenie, a rsync z radością przenosi teraz GB danych.
Niestety, chciałbym również zachować listy ACL. Czy to w jakiś sposób jest możliwe? OS X nie ma getfacl / setfacl i chciałbym uniknąć parsowania danych wyjściowych ls -le
. To, co widzę jako rozwiązanie, to jakoś powiedzieć rsync, aby stosowało listy ACL „wstecz”, to znaczy od plików liści do katalogów, ale nie ma na to opcji.