Usando o Rsync para fazer backup em uma unidade externa

17

Estou comprando um disco rígido externo para fazer backup dos computadores da minha casa (finalmente !!). Espero usar o rsync. Eu vi um exemplo que faz (ou parece fazer) exatamente o que eu quero. Algo assim:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

No entanto, ao examinar a documentação e os exemplos do rsync e assim por diante, as coisas começaram a parecer MUITO mais complicadas do que isso. Redes e daemons e jargões, oh meu Deus!

Suponho que nada disso seja necessário, desde que eu esteja apenas sincronizando de um computador para uma unidade externa conectada a um firewire. Estou errado em assumir isso? As coisas realmente serão mais complicadas do que esse comando inócuo?

stalepretzel
fonte

Respostas:

10

O Rsync funciona bem em unidades locais. No entanto, se ele detecta caminhos locais, entra automaticamente no modo --whole-file, que não copia as diferenças, mas apenas copia o arquivo de origem sobre o arquivo de destino. O Rsync ainda ignorará os arquivos que não foram alterados. Quando a largura de banda entre a origem e o destino é alta (como dois discos locais), isso é muito mais rápido do que ler os dois arquivos e copiar apenas os bits alterados.

kbyrd
fonte
2
s / No entanto / Felizmente / quando os arquivos são locais, ler os dois e fazer toda a diferença para escrever o novo com partes de ambos (lendo-os novamente) é muito mais trabalhoso do que apenas ler a fonte, escrever o destino.
Javier
não sabia se eu deveria entrar nisso na minha resposta. Vou adicioná-lo agora.
22410 kbyrd
31

Eu uso o rsync com os seguintes sinalizadores memoráveis ​​como 'glop' e 'trunc' e 'v'.

rsync -gloptrunc $srcdir $dstdir

Um breve guia:

  • g - preservar informações de propriedade do grupo
  • l - copiar links simbólicos como links simbólicos
  • o - preservar as informações do proprietário
  • p - preservar permissões
  • t - preservar timestamps
  • r - recurs através de diretórios
  • u - atualize, pule os arquivos mais recentes
  • [n] - não, não faça isso, faça uma corrida a seco
  • c - soma de verificação, tente somas de verificação nos blocos de arquivos quando possível (*)
    nota: nos sistemas de arquivos locais, isso é substituído e os arquivos inteiros são copiados.
  • v - detalhado

Eu sempre corro o procedimento acima para garantir que funcione e, em seguida, removo o sinalizador 'n' que fica satisfeito com os resultados.

Os principais recursos das combinações acima:

  • Eu o executo em AMBAS as direções entre dois (ou mais) servidores, sincronizando assim em AMBAS as direções. Você atualiza o que achar que é o mestre da época.
  • Ele permite ser o mestre, com a ressalva significativa de que, se você deseja excluir algo, deve excluí-lo nos dois para ter certeza de que realmente se foi, caso contrário ele volta.

Eu uso isso para manter duas máquinas sincronizadas ou para subdividir em sincronização (como fazer backup em uma unidade USB).

Como uma das outras postagens declaradas anteriormente, a 'soma de verificação' pode ser forçada a DESLIGAR se você estiver lidando com unidades locais.

Em alguns casos raros, tive que adicionar parâmetros adicionais para explicar as alterações nas contas de login em máquinas remotas, alterar portas e até especificar onde 'rsync' mora no host remoto ... mas esses não são diretamente aplicáveis ​​ao seu questão.

ericslaw
fonte
3
O sinalizador -a para rsync não faz tudo isso acima?
Rory
2
Não sou muito fã de usar sinalizadores 'meta' quando não sei ao certo o que eles fazem. A manapage para rsync indica que '-a' é realmente -rlptgoD na minha caixa, que ignora 'u' e 'v', mas inclui 'D'. desses, parece que, para mim, a adição de 'u' é a única diferença fundamental.
21700 ericslaw
Como forçá-lo a espelhar da origem ao destino (excluindo qualquer coisa no destino que não esteja na fonte), em vez de copiar bidirecionalmente?
Gabriel Staples
1
Parece que você precisaria usar rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. O --deletediz para excluir qualquer coisa no destino que não está na fonte, e --delete-excludeddiz também apagar arquivos excluídos no destino que normalmente não ser rastreado ou copiado. Se você usar --delete-excluded, tecnicamente não precisará usar também --delete, mas não há problema em usá-los de qualquer maneira. Os detalhes estão nas páginas de manual aqui: linux.die.net/man/1/rsync .
Gabriel Staples
Nota: para uso geral do rsync, também escrevi este tutorial para mim, para que eu possa consultá-lo conforme necessário: Como usar o rsync
Gabriel Staples
4

Nada disso é necessário, você pode usar o rsync sem daemons ou qualquer outro tipo de configuração APENAS BEM!

Basta usar o comando rsync e você estará pronto.

OldJim
fonte
2

A julgar pelo caminho no seu comando rsync, eu estaria certo ao pensar que você está usando o Mac OS X?

Pessoalmente, eu optaria por usar o Time Machine (se você estiver usando o Leopard) ou o Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ), que usa o rsync.

Muito mais fácil do que tentar corrigir seu próprio script. Uma vantagem é que o Time Machine e o CCC fornecerão backups incrementais.

Steve Folly
fonte
2

O exemplo que você usou parece que funcionará bem para backups.

Uma coisa que você pode considerar ao usar o rsync, no entanto, é usar a opção --link-dest. Isso permite manter vários backups, mas usar links físicos para arquivos inalterados, fazendo com que todos os backups ocupem o espaço de um incremental. Um exemplo de uso seria:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Isso pressupõe que você tenha um backup datado para 12 de junho e deseje criar um novo em 13 de junho. Você pode querer omitir a opção -v se não desejar uma impressão de cada arquivo.

Marca
fonte
1
O rsnapshot é um sistema de backup que usa o link-dest como você descreve para manter os backups completos da versão de maneira eficiente em termos de espaço.
Rory
1

Realmente depende se você está executando bancos de dados ou não. O Rsync obtém um instantâneo de todos os arquivos e ignora as gravações intervenientes. Se você deseja fazer backup de um banco de dados, verifique a configuração de um filtro de ignorados e a execução de ferramentas de despejo de banco de dados antes do rsync.

jldugger
fonte
1

Seu comando, como escrito, deve funcionar, no entanto, você pode querer olhar para um programa chamado rsnapshot, construído sobre o rsync e mantém várias versões de arquivos para que você possa voltar e ver as coisas como eram na semana passada ou no mês passado. A configuração é bastante fácil e é realmente boa em otimização de espaço; portanto, a menos que você tenha muita rotatividade, não ocupa muito mais espaço do que um único backup.

Catherine MacInnes
fonte
1

Você não mencionou seu sistema operacional. Seguindo a premissa de que seu sistema operacional é baseado em * nix, seu comando é bom.

No entanto, se uma ou ambas as unidades tiverem o formato NTFS, sendo acessadas a partir do * nix ou mesmo a partir do Windows usando o Mobaxterm / cygwin, a funcionalidade incremental do rsync não funcionará bem com rsync -a (archive flag)

Se as unidades NTFS estiverem envolvidas, você poderá usar:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Faça o download do cliente Mobaxterm ssh para ter a funcionalidade rsync no Windows.

Aqui estão mais informações sobre o uso do rsync com unidades NTFS

Raman Kathpalia
fonte
0

Eu tentei usar o rsync para backup, mas acabou sendo uma bagunça. O rsync é mais adequado para 'sincronizar' do que para fazer backup. E é sempre para comparar arquivos grandes.

Eu pesquisei um pouco e tentei vários (basicamente testando todos, desde o backup de pesquisa do apt-cache no ubuntu).

Finalmente, acabei com ' backup2l - ferramenta de backup / restauração de baixa manutenção', é fácil. Gosto da maneira como gerencia o planejamento e a rotação (em níveis). Eu o executo sempre que tenho minha unidade externa USB conectada na linha de comando, mas você também pode automatizá-la.

chmeee
fonte
0

Tente dirvish para fazer o backup. http://www.dirvish.org/
Ele usa os hardlinks do rsync nos chamados cofres. Você pode manter o máximo de despejos mais antigos que o disco USB aguentar. Ou configure-o de forma automatizada.

Uma vez que você entenda a idéia de direcionar, é mais conveniente usar do que o rsync com todas as suas opções.

Michèle
fonte
rsnapshot faz similar ao dirvish
Rory
0

Eu encontro uma solução para computadores baseados no Windows: http://www.itefix.no/i2/node/10650

Para copiar D: \ partição para uma unidade externa K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k


fonte