Jak skopiować wolumin Time Machine na inny dysk przy użyciu rsync, zachowując ACL?

9

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 -Apowyż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.

Nikola Knezevic
źródło
Czy rsync na docelowym końcu działa jako użytkownik z uprawnieniami do chmod tych plików?
harrymc
To może być oczywiste pytanie, ale czy jesteś pewien, że obsługa ACL jest włączona w woluminie docelowym? Sugerujesz, że kopiujesz na Maca, co powinno, ale w takim przypadku powinno po prostu działać, chyba że użytkownik na tym końcu nie jest tym samym identyfikatorem użytkownika co oryginalne pliki, w takim przypadku prawdopodobnie będziesz musiał ustawić lub przejdź do korzystania z roota (oczywiście nie jest to dobra rzecz, ale dba o problem z pozwoleniem na ustawienie własności komuś innemu).
Tom Scogland,
Ponadto wspomniane konto użytkownika należy zdefiniować dla celu, w przeciwnym razie nie będzie można ustawić właściciela.
harrymc

Odpowiedzi:

3

Pobierz rsync w wersji 3 za pomocą Homebrew. Następnie możesz wypróbować opcję „--acls”. Rsync na Macu wydaje się mieć nieco inną składnię wiersza poleceń niż inne systemy operacyjne. Prawdopodobnie chcesz rzucić okiem na ten link: http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/ . Opisuje jak zdobyć rsync 3 i argumenty wiersza poleceń, których używa.

Nie jestem użytkownikiem OSX, ale wykonuję kopię zapasową komputera Mac mojej żony na serwerze Linux za pomocą rsync.

Lencho Reyes
źródło
2

rsync, przynajmniej w OS X 10.4 i nowszych, przeniesie atrybuty ACL, jeśli użyto opcji -E. Zobacz stronę manuala.

neoplop
źródło