Como copiar o volume do Time Machine para outro disco usando o rsync enquanto preserva as ACLs?

9

Recentemente, tive que mudar o sistema de arquivos do meu Mac de preservação de caso para ser totalmente sensível a maiúsculas. Fiz isso usando o CCC e copiando dados para outro disco e retornando ao disco principal recém-formatado.

Agora, eu queria fazer o backup do Time Machine no meu disco antigo do Time Machine, hospedado no meu NAS baseado no FreeBSD, exportado pelo AFP. No entanto, estou recebendo um erro que os sistemas de arquivos não correspondem, pois o Time Machine ainda possui um fs que não diferencia maiúsculas de minúsculas. Desta vez, não posso usar o CCC, pois ele não suporta cópia no nível de arquivo para volumes do Time Machine.

Naturalmente, fui direto ao rsync, mas isso levanta um problema - se eu executá-lo com:

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

ele começa a reclamar assim que chega à Backups.backupdb/<machinename>pasta, com failed to set permissions, operation not permitted. O problema aqui é copiar ACLs, que são bastante restritivos:

 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

Então, removi -Ao comando acima e o rsync agora está movendo GBs de dados com alegria.

Infelizmente, eu gostaria de preservar as ACLs também. Isso é possível de alguma forma? O OS X não possui getfacl / setfacl, e eu gostaria de evitar a análise da saída de ls -le. O que vejo como solução aqui é, de alguma forma, dizer ao rsync para aplicar ACLs "ao contrário", ou seja, dos arquivos em folha até os diretórios, mas não há opção para isso.

Nikola Knezevic
fonte
O rsync no destino final está sendo executado como um usuário com permissão para chmod esses arquivos?
harrymc
Essa pode ser uma pergunta óbvia, mas você tem certeza de que o suporte à ACL está ativado no volume de destino? Você implica que está copiando para um mac, o que deveria, mas nesse caso, ele deve simplesmente estar funcionando, a menos que o usuário não tenha o mesmo ID de usuário que os arquivos originais; nesse caso, você provavelmente precisará definir isso ou mude para o uso de root (obviamente não é uma coisa boa, mas cuida do problema de permissão de definir propriedade para outra pessoa).
Tom Scogland
Além disso, essa conta de usuário deve ser definida para o destino, caso contrário, o proprietário não poderá ser definido.
harrymc

Respostas:

3

Faça o download da versão 3 do rsync usando o Homebrew. Então você pode tentar a opção "--acls". O rsync no Mac parece ter uma sintaxe de linha de comando ligeiramente diferente de outros sistemas operacionais. Você provavelmente deseja dar uma olhada neste link: http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/ . Ele descreve como obter o rsync 3 e os argumentos da linha de comando que ele usa.

Não sou usuário do OSX, mas faço backup do Mac da minha esposa em um servidor Linux com rsync.

Lencho Reyes
fonte
2

O rsync, pelo menos no OS X 10.4 e seguintes, transferirá os atributos da ACL se a opção -E for usada. Veja a página do manual.

neoplop
fonte