Estou usando rsync
(2.6.9, protocolo versão 29) no macOS 10.14.6 (Mojave) para fazer backup de um disco com vídeos. A fonte tem capacidade de 999 GB com 75 GB livres e o backup tem capacidade de 1 TB. O comando é:
$ rsync -avxW --progress /Volumes/Video/ /Volumes/Video\ backup/
building file list ...
40989 files to consider
.DS_Store
26628 100% 0.00kB/s 0:00:00 (xfer#1, to-check=40987/40989)
.DocumentRevisions-V100/
.Spotlight-V100/
rsync: failed to set times on "/Volumes/Video backup/.Spotlight-V100": Operation not permitted (1)
.fseventsd/
iMovie Library.imovielibrary/movie/Original Media/
iMovie Library.imovielibrary/movie/Original Media/DSC_0004.mov
rsync: writefd_unbuffered failed to write 32768 bytes [sender]: Broken pipe (32)
rsync: write failed on "/Volumes/Video backup/iMovie Library.imovielibrary/movie/Original Media/DSC_0004.mov": No space left on device (28)
rsync error: error in file IO (code 11) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/receiver.c(268) [receiver=2.6.9]
rsync: connection unexpectedly closed (76 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/io.c(453) [sender=2.6.9]
O disco de backup está cheio porque rsync
não excluiu vários arquivos que agora estão faltando no original. Verifiquei se a opção --delete-before
é o padrão e também tentei --delete
remover arquivos estranhos, mas obtive o mesmo erro com o mesmo arquivo.
Como posso fazer um clone perfeito de um disco com rsync
?
Por falta de uma solução legal, codifiquei um hack em Python para percorrer o destino e excluir os arquivos e diretórios que não existem na fonte.
Certifique-se de não trocar acidentalmente a origem e o destino, ou você perderá os arquivos originais. A ordem é a mesma
rsync
: primeiro fonte e depois destino.Por padrão, o código solicita confirmação antes de excluir os cinco primeiros caminhos, para que você possa verificar se não está excluindo a origem. Ele exclui arquivos no destino que são links simbólicos na origem.
Usar com:
Você pode executar
rsync
com, por exemplo, conforme abaixo (e-a
preserva os links simbólicos):Aqui está o código para
rsync_pre_process.py
: