Como tantos outros, tenho o hábito de manter algumas pastas do meu macOS sincronizadas com um disco externo, para efeitos de backup.
Depois de vários anos a fazer o habitual drag and drop, decidi ir à procura de uma alternativa melhor… e ainda bem que o fiz!
Procurava uma aplicação que preenchesse os seguintes requisitos:
- verificar se existem ficheiros em falta na diretoria de destino (e transferi-los);
- verificar se existiram alterações nos ficheiros da diretoria de origem (e, se sim, atualizar esses mesmos ficheiros na diretoria de destino);
- apagar eventuais ficheiros que já não existissem na pasta de origem (requisito bónus, visto ser uma necessidade rara no meu caso).
A solução, curiosamente, já estava instalada no meu macOS desde que o comprei. Falo do Rsync.
O Rsync é uma ferramenta para o terminal que já deverá estar instalada no teu macOS. Podes ver a versão que tens instalada escrevendo rsync --version
.
O mais provável é que a tua versão esteja desatualizada – a Apple deixou de incluir ferramentas com a licença GPLv3 ou similar, como é o caso desta. No entanto, atualizá-la é um processo simples.
Para o fazer, vais precisar do Homebrew, que menciono em maior detalhe neste artigo, visto ser uma solução fantástica para automatizar a instalação de aplicações.
Para atualizares o Rsync (eu ainda tinha a versão 2), bastará correres o comando brew install rsync
.
Agora sim, está na hora de ficares a conhecer os comandos mais populares desta poderosa ferramenta de sincronização de pastas e ficheiros.
Explorando o Rsync
Imaginando um cenário em que tens a dir1
(que é a diretoria de origem) e a dir2
(a diretoria de destino), bastará correres o seguinte comando:
rsync dir1/ dir2
Aquela /
é importante que utilizes. Se só escreveres rsync dir1 dir2
, ficarás com uma estrutura do tipo dir2/dir1/ficheiro
em vez de dir2/ficheiro
. Na maior parte das situações, não é o que se pretende.
Se quiseres que as subdiretorias dentro de dir1
também sejam sincronizadas, podes acrescentar a flag -r
, mas a opção mais popular é a flag -a
, que também preserva as permissões, o grupo, data de modificação e outras informações. Opto praticamente sempre pela segunda.
Podes também acrescentar -v
se quiseres um relatório do que foi transferido, e -P
para que tenhas uma barra de progresso para as transferências e a possibilidade de continuar transferências interrompidas.
Juntando as peças, ficarias com este comando, que diria que é o mais popular:
rsync -avP dir1/ dir2
Para testares o comando sem transferir realmente os ficheiros (a chamada dry run), podes acrescentar -n
.
Este comando é particularmente importante se quiseres acrescentar --delete
, que é o comando que apaga ficheiros na diretoria de destino, se os mesmos já não existirem na diretoria de origem.
Se tiveres essa necessidade, aconselho-te a simular sempre primeiro o comando, visto que existem inúmeras histórias de terror de malta que perdeu dados importantes desta forma!
Corre algo deste género primeiro:
rsync -avn --delete dir1/ dir2
E se estiver tudo OK no relatório, retira o n
e volta a corrê-lo.
Não te esqueças também que podes utilizar o Rsync entrando numa máquina remota via SSH – rsync -a ~/dir1 username@host:diretorio
– ou aceder a um disco externo.
No meu caso, visto que o meu disco se chama “Elements”, escreveria algo deste género:
rsync -av dir1/ /Volumes/Elements/dir2"
Estes são os comandos mais populares, mas podes sempre consultar o manual para casos mais específicos.
Para mais comandos no terminal, passa os olhos por este artigo!