Como posso mover um monte de arquivos com hardlink de uma caixa do Linux para o meu OS X Mac e preservar os hardlinks?

1

Eu tenho um backup de rsnapshot que preciso remover de um sistema de arquivos Linux corrompido. Eu preciso preservar os hardlinks internos. Eu tentei rsync -H e usando um novo rsync e nem preservar os hardlinks no OS X.

Eu tentei colocar rsync -H em funcionamento e o isolei no sistema de arquivos montado. Posso preservar os links físicos copiando localmente (HFS para HFS), mas isso não se preserva quando tento rsync off de uma montagem de sistema de arquivos SMB ou montagem de sistema de arquivos AFP. Existe alguma solução de opção de montagem para obter o OS X rsync para obedecer a -H ?

Qualquer conselho seria muito apreciado.

    
por eatloaf 08.12.2010 / 07:37

2 respostas

1

Como o problema parecia ser o rsync do OSX não identificando e preservando hard links de uma fonte EXT2 montada, eu consegui executar um daemon rsync na caixa linux de origem e usar o rsync no meu Mac para se conectar a esse daemon. Parece preservar corretamente os hard-links internos dessa maneira.

  • Para conseguir isso, você precisa ter rsync instalado em ambas as máquinas, com um deles rodando no daemon modo. No meu caso, foi a fonte.

  • Você também precisará editar o rsyncd.conf no lado daemon para definir o 'módulo' (nome fantasia para 'caminho') que será a fonte ou alvo.

  • Finalmente, você usa uma sintaxe modificada do lado não-daemon para referenciar o daemon: usuário @ host :: módulo. Então, copiar do daemon pode ser: rsync -r user @ host :: module ~ / foo

Para mais detalhes, consulte o google 'rsync' e / ou 'rsync daemon'

    
por 09.12.2010 / 18:18
0

Eu certamente espero que haja um caminho mais fácil. Ainda assim, se tudo mais falhar:

Eu nunca usei, mas o script timecopy Python (para uso com < backups em tempo> defeituosos do Time Machine) podem ajudar. É um longo script, mas parece que não é só por muito tempo, só por causa do Time Machine. E, especialmente, seu suporte para discos defeituosos também pode ser útil para o seu sistema de arquivos corrompido. De seu site :

Using a tool that performs a block-for-block copy will in fact copy the file system error to the new disk, which is of no use at all. What's needed is a way to copy the file system to a new location using traditional file copy. The only problem with that is the Time Machine backups are full of hard links, which will appear as normal files and directories, and performing a simple file copy will result in an enormous waste of disk space.

Ele suporta uma opção --dry-run e --verbose produz bons comandos mkdir , cp , ln e ln -s .

O script impõe o uso da estrutura do arquivo Backups.backupdb do Time Machine. parece para mim que alterar srcdb = os.path.join(srcbase, 'Backups.backupdb') para srcdb = srcbase e também alterar dstdb = os.path.join(dstbase, 'Backups.backupdb') para dstdb = dstbase , pode tornar isso utilizável para fontes não TM. / p>

Em seguida, ele processa cada subpasta da pasta de origem, esperando que cada um seja um nome de máquina, sendo a raiz de todos os backups dessa máquina (geralmente um, a menos que o disco seja usado em vários computadores). Em cada subpasta, ele processa tudo, exceto os arquivos com o nome .DS_Store , Latest ou terminando com .inProgress . Mas: não espera que as sub-pastas da pasta de origem sejam elas mesmas. Se você tiver links físicos na pasta de origem, talvez seja possível montar o disco com um nome de pasta extra. Como: use /Volumes/my/mount em vez de /Volumes/mount e, em seguida, execute timecopy para a pasta de origem /Volumes/my .

Por fim, ele também criará um link simbólico chamado Latest , da mesma forma que um disco do Time Machine, para a subpasta mais recente. Você pode, claro, excluir isso depois.

Você ainda pode fazer o --dry-run , ou talvez a saída de --verbose --dry-run possa ajudar a obter um script que você possa usar de alguma outra forma?

    
por 08.12.2010 / 07:54