
Fiz um script de backup muito simples rsync
que faz backup de algumas pastas em um pendrive. Isso é apenas para backups diários rápidos.
O comando é
rsync -av --delete
seguido pelas --exclude
opções e pelos caminhos.
Mas agora me ocorreu que isso possivelmente não é seguro:
o que acontece se meu disco rígido for corrompido e alguns arquivos não puderem mais ser lidos? Excluirá rsync
os arquivos do stick se não conseguir ler a fonte?
Ou, de maneira mais geral: existe algum cenário diferente de "excluir os arquivos do meu disco rígido" que levará à exclusão dos arquivos do pendrive?
Responder1
Em primeiro lugar, --delete
a opção pode levar a alguns resultados destrutivos indesejados se você não tiver conhecimento do contexto. Por exemplo, se a origem ficar vazia, todos os arquivos existentes no destino serão removidos ou se alguns arquivos forem removidos da origem, esses arquivos também serão removidos do destino.
O que acontece se meu disco rígido for corrompido e alguns arquivos não puderem mais ser lidos?
Se rsync
não for possível ler a fonte, será exibida uma mensagem de permissão negada e não fará mais nada. Assim, seus arquivos existentes no destino estarão seguros.
Existe algum cenário diferente de "excluir os arquivos do meu disco rígido" que levará à exclusão dos arquivos do pendrive?
A menos que o seu próprio USB seja corrompido, não, não há cenário em que (você não remove os arquivos da fonte, do disco rígido e) os arquivos existentes no USB sejam excluídos rsync
com --delete
a opção.
Teste:
% ls -1 source dest
dest:
source:
foo
% rsync -av --delete source/ dest
sending incremental file list
./
foo
sent 143 bytes received 38 bytes 362.00 bytes/sec
total size is 16 speedup is 0.09
% ls -1 source dest
dest:
foo
source:
foo
% chmod 000 source
% rsync -av --delete source/ dest
sending incremental file list
rsync: change_dir "/source" failed: Permission denied (13)
sent 20 bytes received 12 bytes 64.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
% ls -1 source dest
dest:
foo
ls: cannot open directory source: Permission denied
Responder2
Uma solução fácil para problemas de corrupção e exclusão é empregar um procedimento de backup adequado. Gire uma série de três (ou mais) pendrives USB, usando o 'backup' mais antigo como o stick conectado ao executar este comando uma vez por semana. Dessa forma, se você detectar a corrupção antes de percorrer as unidades USB, poderá recuperá-la. Isso é conhecido como FIFO (First In, First Out).
Existem outros esquemas mais complicados, todos compatíveis com o seu método de backup. Uma cartilha sobre alguns deles está disponível na Wikipedia no seguinte link:
https://en.wikipedia.org/wiki/Backup_rotation_scheme