Bagaimana cara menyalin volume Time Machine ke disk lain menggunakan rsync sambil mempertahankan ACL?

9

Baru-baru ini saya harus mengubah sistem file Mac saya dari mempertahankan kasus menjadi sepenuhnya case-sensitive. Saya melakukannya dengan menggunakan CCC dan menyalin data ke disk lain, lalu kembali ke disk utama yang baru diformat.

Sekarang, saya ingin melakukan backup Time Machine pada disk Time Machine lama saya, yang di-host di NAS berbasis FreeBSD saya, diekspor melalui AFP. Namun, saya mendapatkan kesalahan yang tidak cocok dengan filesystem, karena Time Machine masih memiliki fs yang tidak case-sensitive. Kali ini, saya tidak bisa menggunakan CCC, karena tidak mendukung salinan level file untuk volume Time Machine.

Secara alami, saya langsung mencari rsync, tapi itu menimbulkan masalah - jika saya jalankan dengan:

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

itu mulai mengeluh begitu hits Backups.backupdb/<machinename>folder, dengan failed to set permissions, operation not permitted. Masalahnya di sini adalah menyalin ACL, yang cukup ketat:

 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

Jadi, saya menghapus -Adari perintah di atas, dan rsync sekarang dengan senang hati memindahkan data GB.

Sayangnya, saya ingin melestarikan ACL juga. Apakah itu mungkin? OS X tidak memiliki getfacl / setfacl, dan saya ingin menghindari keluaran parsing ls -le. Apa yang saya lihat sebagai solusi di sini adalah entah bagaimana memberitahu rsync untuk menerapkan ACL "mundur", yaitu, dari file daun ke direktori, tetapi tidak ada pilihan untuk itu.

Nikola Knezevic
sumber
Is rsync on the destination end running as a user with permission to chmod those files?
harrymc
This may be an obvious question, but are you sure ACL support is turned on in the destination volume? You imply that you're copying to a mac, which should, but in that case it should simply be working unless the user on that end is not the same user id # as the original files, in which case you will probably need to set that up, or switch to using root (obviously not a good thing, but takes care of the permission problem of setting ownership to someone else).
Tom Scogland
In addition, this said user account should be defined for the target, or else the owner cannot be set.
harrymc

Jawaban:

3

Download rsync version 3 using Homebrew. Then you can try the "--acls" option. The rsync on Mac seems to have a slightly different command line syntax from other operating systems. You probably want to take a look at this link: http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/. It describes how to get rsync 3 and the command line arguments he uses.

I'm not an OSX user, but I back up my wife's Mac to a Linux server with rsync.

Lencho Reyes
sumber
1

rsync, at least in OS X 10.4 and following, will transfer ACL attributes if the -E option is used. See the man page.

neoplop
sumber