Backup automático e confiável de dados

5

Eu tenho muitas músicas sem perdas no meu computador. Infelizmente, às vezes (agora muito raramente) eles se corromperam e eu tive que substituí-los por meu backup de um disco rígido externo.

O backup foi feito manualmente e, claro, foi tedioso. Com o crescimento da minha coleção de músicas, ficou cada vez mais difícil encontrar à mão quais álbuns não foram arquivados.

Qual seria a solução ideal para este caso? Simplesmente cp -ing? Algum rsync de uso? Eu prefiro não atualizar os arquivos existentes - eles dificilmente mudam e eu não quero apagar arquivos bons com arquivos corrompidos.

    
por marmistrz 24.07.2015 / 10:19

2 respostas

6

Recomendo vivamente rsync . Ele pode detectar automaticamente quais arquivos estão faltando no destino em comparação com a origem e copiá-los apenas. IIUC, é a melhor solução para o seu caso de uso. No seu caso cp é inútil porque sempre copiará todos os arquivos e será muito mais lento que rsync . Se você entender como o rsync funciona, será a melhor solução para copiar grandes conjuntos de dados em qualquer caso.

Apenas observe que se você decidiu usar rsync via rede no futuro, ele deve ser instalado em máquinas de origem e de destino. Essa é a única desvantagem de rsync que eu conheço.

EDITAR:

O uso de

rsync é muito simples. Geralmente se resume ao seguinte comando:

$ rsync -avz <SOURCE> <DESTINATION>

-a significa modo de arquivo - copie o diretório recursivamente e recrie links simbólicos, salve permissões, horários de modificação, grupos ownerhsip, proprietários, -v significa verboso, -z means compress

Ao fazer o download, os nomes dos arquivos temporários são prefixados com . . Da próxima vez, o mesmo comando será executado somente arquivos que foram alterados localmente e novos arquivos que apareceram em DESTINATION serão baixados de DESTINATION para SOURCE .

É fácil usar rsync over ssh :

$ rsync -avz -e ssh hosting:/home1/rkumvbrh/mail/drabczyk.org/arkadiusz .

-e ssh pode ser omitido porque o ssh é o padrão:

$ rsync -avz hosting:/home1/rkumvbrh/mail/drabczyk.org/arkadiusz .

Ao usar rsync via rede, ele deve ser instalado no final:

$ rsync -avz -e "ssh" router:<FILE> .
ash: rsync: not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: remote command not found (code 127) at io.c(226) [Receiver=3.1.0]

EDITAR:

Ok, no começo eu pensei que você quer substituir todos os arquivos que foram corrompidos em seu disco local por arquivos de um disco externo e copiar todos os novos arquivos do disco externo. Mas se você quiser copiar apenas novos arquivos do seu disco interno para um disco externo, você deve adicionar a opção --ignore-existing para que os novos arquivos sejam copiados para um disco externo, mas os arquivos corrompidos não:

$ rsync -avz --ignore-existing <PATH/TO/INTERNAL_HDD> <PATH/TO/EXTARNAL_HDD>

De man rsync :

--ignore-existing This tells rsync to skip updating files that already exist on the destination (this does not ignore existing directories, or nothing would get done). See also --existing.

   This option is a transfer rule, not an exclude, so it
   doesn't affect the data that goes into the file-lists, and
   thus it doesn't affect deletions. It just limits the files
   that the receiver requests to be transferred.

   This option can be useful for those doing backups using the
   --link-dest option when they need to continue a backup run that
   got interrupted. Since a --link-dest run is copied into a new
   directory hierarchy (when it is used properly), using --ignore
   existing will ensure that the already-handled files don't
   get tweaked (which avoids a change in permissions on the
   hard-linked files). This does mean that this option is only
   looking at the existing files in the destination hierarchy
   itself.
    
por 24.07.2015 / 10:40
0

A adição de -c ao comando rsync garante que todos os arquivos sejam iguais nos dois lados.

    
por 12.03.2016 / 19:28

Tags