Quanto mais uso, rsync
mais percebo que é um canivete suíço de transferência de arquivos. Existem tantas opções. Recentemente, descobri que você pode ir --remove-source-files
e ele excluirá um arquivo da fonte quando for copiado, o que torna um pouco mais um movimento do que um programa de cópia. :)
Quais são suas dicas e truques favoritos de rsync?
--delete-before
por exemplo), o antigo comportamento "compilar primeiro a lista" será usado, pois é necessário que essas opções funcionem corretamente - portanto, se você não vir esse comportamento, verifique se o outras opções que você está usando são conhecidas para impedir que isso seja possível. Isso pode ser útil se você estiver usando o rsync interativamente em uma árvore grande e quiser forçar a verificação inicial, para que a saída--progress
seja precisa (ou seja, a contagem de "objetos a serem comparados" nunca aumentará, pois nenhum novo objeto será encontrado após a verificação inicial) )Usando
--link-dest
para criar backups baseados em instantâneo com economia de espaço, nos quais você parece ter várias cópias completas dos dados de backup (uma para cada execução de backup), mas os arquivos que não são alterados entre as execuções são vinculados ao invés de criar novas cópias, economizando espaço.(na verdade, eu ainda uso o método
rysnc
-followed-by-cp -al
que alcança a mesma coisa, consulte http://www.mikerubel.org/computers/rsync_snapshots/ para obter uma descrição antiga, mas ainda muito boa das duas técnicas e questões relacionadas)A principal desvantagem dessa técnica é que, se um arquivo é corrompido devido a um erro no disco, ele também é corrompido em todos os instantâneos vinculados a esse arquivo, mas também tenho backups offline que protegem contra isso em uma extensão decente. Outra coisa a se observar é que seu sistema de arquivos possui inodes suficientes ou você os esgotará antes de ficar sem espaço em disco (embora eu nunca tenha tido um problema com os padrões ext2 / 3).
Além disso, nunca esqueça o muito útil
--dry-run
para uma paranóia um pouco saudável, especialmente quando você estiver usando as--delete*
opções.fonte
Se você precisar atualizar um site com alguns arquivos enormes em um link lento, poderá transferir os arquivos pequenos da seguinte maneira:
rsync -a --max-size = 100K / var / www / there: / var / www /
faça isso para os arquivos grandes:
rsync -a --min-size = 100K --bwlimit = 100 / var / www / there: / var / www /
O rsync tem muitas opções úteis para sites. Infelizmente, ele não possui uma maneira integrada de detectar atualizações simultâneas; portanto, você precisa adicionar lógica aos scripts cron para evitar gravações sobrepostas de arquivos enormes.
fonte
Eu uso a opção --existing ao tentar manter um pequeno subconjunto de arquivos de um diretório sincronizado para outro local.
fonte
--rsh
é meu.Usei-o para alterar a cifra no ssh para algo mais rápido (
--rsh="ssh -c arcfour"
) também para configurar uma cadeia dessh
s (recomendo usá-lo comssh-agent
) para sincronizar arquivos entre hosts que não podem falar diretamente. (rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/
)fonte
Quando esta opção é usada, o rsync pára após T minutos e sai. Eu acho que essa opção é útil ao sincronizar uma grande quantidade de dados durante a noite (horário não ocupado) e depois parar quando é hora de as pessoas começarem a usar a rede, durante o dia (horário ocupado).
Esta opção permite especificar a que horas parar o rsync.
O modo de lote pode ser usado para aplicar o mesmo conjunto de atualizações a muitos sistemas idênticos.
fonte
at
para matar o processo?Se você está se perguntando até que ponto um rsync de execução lenta chegou e não usou -v para listar arquivos à medida que eles são transferidos, você pode descobrir quais arquivos ele abriu:
em um sistema que possui / proc
Por exemplo, o rsync foi suspenso para mim agora mesmo, embora o sistema remoto parecesse ter um monte de espaço restante. Esse truque me ajudou a encontrar o arquivo inesperadamente grande, do qual não me lembrava, que não se encaixava do outro lado.
Também me contou informações um pouco mais interessantes - a outra extremidade aparentemente desistiu, pois havia também um link de soquete quebrado:
fonte
--archive
é uma opção padrão (embora não seja o padrão) para tarefas do tipo backup, o que garante que a maioria dos metadados dos arquivos de origem (permissões, propriedade etc.) sejam copiados.No entanto, se você não quiser usá-lo, muitas vezes ainda desejará incluir
--times
, que será copiado nos tempos de modificação dos arquivos. Isso torna o próximo rsync executado (supondo que você esteja fazendo isso repetidamente) muito mais rápido, pois o rsync compara os tempos de modificação e ignora o arquivo se ele não for alterado. Surpreendentemente (pelo menos para mim) essa opção não é o padrão.fonte
O que eu mais uso é definitivamente o
--exclude-from
que permite especificar um arquivo contendo itens a serem excluídos.Também acho
--chmod
muito útil, pois permite que as permissões terminem em um estado desejável, mesmo que sua fonte esteja desarrumada.fonte
--backup-dir =
date +%Y.%m.%d
--delete Estamos excluindo, mas fazendo uma cópia ... apenas no casofonte
O meu é
--inplace
. O Works se pergunta quando o servidor de backup está executando o ZFS ou o btrfs e você faz instantâneos nativos.fonte
Obviamente, também existem as
--delete
que remove coisas do destino que não podem ser encontradas na fonte.fonte
cwrsync - Rsync para Windows http://www.itefix.no/i2/node/10650
Esta versão inclui o OpenSSH para que você possa transferir arquivos por um canal seguro.
fonte
Em caso de interrupções
Para limitar a largura de banda - bom para copiar arquivos grandes, diretórios
fonte
bwlimit
? bits por segundo, bytes por segundo?Se você configurou o rsync como um daemon no servidor, basta navegar pelos módulos compartilhados como qualquer outra listagem de diretório. Então você pode ver quais caminhos estão disponíveis e quais não.
fonte
Quando eu uso o GlusterFs, temos um gargalo com arquivos T com tamanho zero; para sincronizar entre réplica ou bloco com falha, devemos usar
--min-size=1
para não sincronizar o arquivo vazio do servidor com falhafonte