Comment copier le volume Time Machine sur un autre disque en utilisant rsync tout en préservant les ACL?


9

Récemment, j'ai dû changer le système de fichiers de mon Mac de la préservation de la casse à la pleine respect de la casse. J'ai fait cela en utilisant CCC et en copiant des données sur un autre disque, puis en revenant sur le disque principal nouvellement formaté.

Maintenant, je voulais faire la sauvegarde Time Machine sur mon ancien disque Time Machine, qui est hébergé sur mon NAS basé sur FreeBSD, exporté via AFP. Cependant, je reçois une erreur indiquant que les systèmes de fichiers ne correspondent pas, car Time Machine a toujours des fs non sensibles à la casse. Cette fois, je ne peux pas utiliser CCC, car il ne prend pas en charge la copie de niveau fichier pour les volumes Time Machine.

Naturellement, je suis allé directement pour rsync, mais cela pose un problème - si je l'exécute avec:

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

il commence à se plaindre dès qu'il atteint le Backups.backupdb/<machinename>dossier, avec failed to set permissions, operation not permitted. Le problème ici est la copie des ACL, qui sont assez restrictives:

 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

J'ai donc supprimé -Ala commande ci-dessus, et rsync déplace maintenant avec bonheur des Go de données.

Hélas, je voudrais également conserver les ACL. Est-ce possible d'une manière ou d'une autre? OS X n'a ​​pas getfacl / setfacl, et je voudrais éviter d'analyser la sortie de ls -le. Ce que je vois comme une solution ici est de dire en quelque sorte à rsync d'appliquer les ACL "en arrière", c'est-à-dire des fichiers feuilles aux répertoires, mais il n'y a pas d'option pour cela.


Est-ce que rsync à l'extrémité de destination s'exécute en tant qu'utilisateur avec l'autorisation de chmoder ces fichiers?
harrymc

Cela peut être une question évidente, mais êtes-vous sûr que la prise en charge ACL est activée dans le volume de destination? Vous impliquez que vous copiez sur un Mac, ce qui devrait, mais dans ce cas, cela devrait simplement fonctionner à moins que l'utilisateur à cette fin ne soit pas le même identifiant utilisateur que les fichiers d'origine, auquel cas vous devrez probablement définir que, ou passez à l'aide de root (évidemment pas une bonne chose, mais prend soin du problème d'autorisation de définir la propriété à quelqu'un d'autre).
Tom Scogland

De plus, ce dit compte d'utilisateur doit être défini pour la cible, sinon le propriétaire ne peut pas être défini.
harrymc

Réponses:


3

Téléchargez la version 3 de rsync en utilisant Homebrew. Ensuite, vous pouvez essayer l'option "--acls". Le rsync sur Mac semble avoir une syntaxe de ligne de commande légèrement différente des autres systèmes d'exploitation. Vous voudrez probablement jeter un œil à ce lien: http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/ . Il décrit comment obtenir rsync 3 et les arguments de ligne de commande qu'il utilise.

Je ne suis pas un utilisateur OSX, mais je sauvegarde le Mac de ma femme sur un serveur Linux avec rsync.


2

rsync, au moins sous OS X 10.4 et versions ultérieures, transférera les attributs ACL si l'option -E est utilisée. Voir la page de manuel.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.