Dicas e truques rsync favoritos

54

Quanto mais eu uso rsync , mais percebo que é um canivete suíço de transferência de arquivos. Existem tantas opções. Eu descobri recentemente que você pode ir --remove-source-files e vai apagar um arquivo da fonte quando ele é copiado, o que torna um pouco mais de um movimento, em vez de copiar o programa. :)

Quais são as suas dicas e truques rsync favoritos?

    
por Rory 24.07.2009 / 11:21

16 respostas

17

Tente usar a versão 3 do rsync se tiver que sincronizar muitos arquivos! A V3 constrói sua lista de arquivos incrementalmente e é muito mais rápida e usa menos memória que a versão 2.

Dependendo da sua plataforma, isso pode fazer uma grande diferença. No OSX versão 2.6.3 levaria mais de uma hora ou falha tentando construir um índice de 5 milhões de arquivos enquanto a versão 3.0.2 que eu compilei começou a copiar imediatamente.

    
por 24.07.2009 / 16:29
17

Uso de --link-dest para criar backups baseados em snapshots eficientes em termos de espaço, em que você parece ter várias cópias completas dos dados de backup (uma para cada execução de backup), mas arquivos que não são alterados entre As execuções são vinculadas em vez 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, veja link para uma execução antiga, mas ainda muito boa, de técnicas e problemas relacionados)

A principal desvantagem dessa técnica é que, se um arquivo está corrompido devido a um erro de disco, ele é tão corrupto em todos os snapshots que se vinculam a esse arquivo, mas também tenho backups off-line que protegem contra esse problema em uma extensão decente . A outra coisa a observar é que seu sistema de arquivos tem inodes suficientes ou você ficará sem eles antes de ficar sem espaço em disco (embora eu nunca tenha tido problemas 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 estiver usando as opções --delete* .

    
por 24.07.2009 / 12:26
12

Se você precisar atualizar um site com alguns arquivos grandes em um link lento, poderá transferir os arquivos pequenos desta forma:

rsync -a --max-size = 100K / var / www / lá: / var / www /

faça isso para os arquivos grandes:

rsync -a --min-size = 100K --bwlimit = 100 / var / www / lá: / 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 a sobreposição de gravações de arquivos grandes.

    
por 26.08.2009 / 13:05
10

Eu uso a opção --existing ao tentar manter um pequeno subconjunto de arquivos de um diretório sincronizado com outro local.

    
por 24.07.2009 / 11:32
8

--rsh é meu.

Eu usei-o para alterar a cifra em ssh para algo mais rápido ( --rsh="ssh -c arcfour" ) também para configurar uma cadeia de ssh s (recomendo usá-lo com ssh-agent ) para sincronizar arquivos entre hosts que não podem fale diretamente. ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/ ).

    
por 24.07.2009 / 17:26
7
--time-limit

Quando esta opção é usada, o rsync irá parar após T minutos e sair. Eu acho que esta opção é útil quando rsyncing uma grande quantidade de dados durante a noite (horas não ocupadas) e, em seguida, parando quando tempo para as pessoas começarem a usar a rede, durante o dia (horas ocupadas).

--stop-at=y-m-dTh:m

Esta opção permite especificar a que hora parar o rsync.

Batch Mode

O modo em lote pode ser usado para aplicar o mesmo conjunto de atualizações a muitos sistemas idênticos.

    
por 04.06.2012 / 23:51
6

Se você está se perguntando até que ponto um rsync lento funcionou, e não usou -v para listar os arquivos à medida que são transferidos, você pode descobrir quais arquivos estão abertos:

 ls -l /proc/$(pidof rsync)/fd/*

em um sistema que possui / proc

Por exemplo rsync foi pendurado para mim agora mesmo, embora o sistema remoto parecia ter um monte de espaço à esquerda. Esse truque me ajudou a encontrar o arquivo inesperadamente grande que eu não lembrava, que não caberia no outro lado.

Ele também me contou algumas informações mais interessantes - o outro lado aparentemente desistiu, já que havia também um link de soquete quebrado:

/proc/22954/fd/4: broken symbolic link to 'socket:[2387837]'
    
por 09.01.2011 / 19:08
5

--archive é uma opção padrão (embora não seja o padrão) para tarefas semelhantes a backup, o que garante que a maioria dos metadados dos arquivos de origem (permissões, propriedade, etc.) seja copiada.

No entanto, se você não quiser usá-lo, muitas vezes ainda incluirá --times , que será copiado nos tempos de modificação dos arquivos. Isso faz com que o próximo rsync seja executado (supondo que você esteja fazendo isso repetidamente) muito mais rápido, pois o rsync compara os tempos de modificação e pula o arquivo se ele não for modificado. Surpreendentemente (para mim, pelo menos) esta opção não é o padrão.

    
por 10.10.2010 / 09:14
4

O que eu mais uso é definitivamente --exclude-from , que permite especificar um arquivo contendo coisas a serem excluídas.

Também considero --chmod muito útil, pois permite que as permissões acabem em um estado desejável, mesmo que sua fonte esteja confusa.

    
por 24.07.2009 / 11:28
4

- backup-dir = date +%Y.%m.%d --delete Estamos excluindo, mas fazendo uma cópia ... apenas no caso de

    
por 24.07.2009 / 17:56
4

A minha é --inplace . Funciona maravilhas quando o servidor para backups está executando o ZFS ou o btrfs e você faz instantâneos nativos.

    
por 09.01.2011 / 20:50
3

Naturalmente, também há --delete , que remove o material do destino que não pode ser encontrado na origem.

    
por 24.07.2009 / 11:34
2

cwrsync - Rsync para Windows link

Esta versão inclui o OpenSSH para que você possa transferir arquivos por um canal seguro.

    
por 09.01.2011 / 20:02
2
--partial 

Em caso de interrupções

--bwlimit=100

Para limitar a largura de banda - bom para copiar arquivos grandes, diretórios

    
por 04.06.2012 / 23:19
1

Se você tiver o rsync configurado como um daemon no servidor, poderá 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.

    
por 24.07.2009 / 13:09
1

quando eu uso GlusterFs temos um afunilamento com arquivos T com tamanho zero, para sincronização entre tijolos ou réplicas com falha, devemos usar --min-size=1 para não sincronizar o arquivo vazio do servidor com falha

    
por 18.04.2015 / 04:35