Estou executando o rsync para sincronizar um diretório no meu disco rígido USB externo. São cerca de 150 GB de dados. 50000 + arquivos, eu acho.
Ele está executando sua primeira sincronização no momento, mas está copiando arquivos a uma taxa de apenas 1 a 5 MB / s. Isso parece incrivelmente lento para um gabinete USB 2.0. Também não há outras transferências acontecendo na unidade.
Aqui estão as opções que eu usei:
rsync -avz --progress /mysourcefolder /mytargetfolder
Estou executando o Ubuntu Server 9.10.
usb
ubuntu-9.10
usb-flash-drive
rsync
Jake Wilson
fonte
fonte
tar
comandos canalizados oucpio
.Respostas:
Para a primeira sincronização, use
O rsync adiciona sobrecarga apenas quando o destino está vazio.
também .. a opção -z provavelmente está prejudicando seu desempenho, você não deve usá-lo se não estiver transferindo dados por um link lento.
fonte
rsync -avz --progress /mysourcefolder/ /mytargetfolder
ou você obterá uma cópia demysourcefolder
dentro de, emmytargetfolder
vez de espelhar o conteúdoSe você estiver usando o rsync com uma rede rápida ou disco a disco na mesma máquina,
não usando a compressão -z
e usando --inplace
acelera o desempenho dos discos rígidos ou da rede
compressão usa muita CPU
não usar o inplace faz com que o disco rígido se debata muito (ele usa um arquivo temporário antes de criar o final)
compressão e não usar no local é melhor para fazê-lo pela internet (rede lenta)
NOVO: Esteja ciente do destino ... se houver "compactação" de NTFS ativada ... isso desacelera gravemente arquivos grandes (eu diria 200 MB +). O rsync quase parece estagnado, é causado por isso.
fonte
Use a
-W
opção Isso desativa as comparações delta / diff. Quando a hora / tamanhos dos arquivos diferem, o rsync copia o arquivo inteiro.Remova também a
-z
opção. Isso é útil apenas para compactar o tráfego de rede.Agora
rsync
deve ser tão rápido quantocp
.fonte
-z
é útil apenas para tráfego de rede de baixa velocidade . Se sua rede for rápida o suficiente, isso diminuirá a velocidade, pois você ficará limitado pela CPU.-W
: "Esse é o padrão quando a origem e o destino são especificados como caminhos locais, mas apenas se nenhuma opção de gravação em lote estiver em vigor".Primeiro - o número de arquivos nesse caso será um fator importante. É um tamanho médio de 3 MB cada. Provavelmente há um gargalo de io influenciando a velocidade no caso do OP. Mais aqui - é uma leitura bastante seca, mas a imagem da capa vale a pena.
Então, usando o rsync para copiar para um diretório vazio? Aqui estão algumas maneiras de acelerar:
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- o primeiro> basicamente imprime um arquivo com todas as coisas que você normalmente veria, e o 2> se refere a mensagens de erro.Meu comando seria:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Se tudo parecesse bem, eu excluiria "--dry-run" e deixaria para lá. A, X e E cobrem atributos e permissões estendidos não cobertos por -a, l é para links flexíveis, H é para links físicos e h é legível por humanos.
A atualização de um diretório já sincronizado em uma unidade USB, ou a mesma unidade ou em uma rede, exigirá diferentes comandos rsync para maximizar a velocidade de transferência.
Bônus - aqui está a página de manual do rsync , e se você quiser testar a velocidade do seu disco rígido, o bonnie ++ é uma boa opção e, para a velocidade da sua rede, tente o iperf .
* A publicação tem quase dez anos, mas os mecanismos de pesquisa certamente gostam, e eu continuo vendo. É uma boa pergunta, e não acho que a resposta principal para "como acelerar o rsync" seja "use cp".
fonte
Você não diz que tamanho de distribuição seus arquivos têm. Se houver muitos arquivos pequenos, isso reduzirá a taxa geral de transferência, aumentando a latência do movimento da cabeça nas unidades de origem e de destino, pois a ferramenta abre novos arquivos e o sistema operacional mantém entradas de diretório e outros metadados (como o diário do sistema de arquivos, se você estiver usando diário de metadados, como ext3 / ext4 e NTFS, por padrão) atualizados durante a transferência. Um processo de cópia de arquivo apenas "entra em ação" para objetos maiores, quando uma simples transferência em massa está acontecendo.
fonte
Você definitivamente quer experimentar o rclone . Essa coisa é louca rápido:
Diretórios $ tree / usr [...] 26105, 293208 arquivos
$ sudo rclone sync / usr / home / fred / temp -P -L - transferências 64
Transferido: 17.929G / 17.929 GBytes, 100%, 165.692 MBytes / s, ETA 0s Erros: 75 (tentar novamente pode ajudar) Verificações: 691078/691078, 100% Transferido: 345539/345539, 100% Tempo decorrido: 1m50.8s
Esta é uma cópia local de e para um SSD LITEONIT LCS-256 (256GB).
Você pode adicionar --ignore-checksum na primeira execução para torná-la ainda mais rápida.
fonte
Evitar
-z
/--compress
: a compactação carregará apenas a CPU, pois a transferência não está na rede, mas na RAM.--append-verify
: retoma uma transferência interrompida. Parece uma boa idéia, mas tem o caso de falha perigosa: qualquer arquivo de destino do mesmo tamanho (ou maior) que a fonte será IGNORADO. Além disso, verifica o arquivo inteiro no final, o que significa que não há aceleração significativa--no-whole-file
ao adicionar um caso de falha perigoso.Usar
-S
/--sparse
: transforma sequências de nulos em blocos esparsos--partial
ou-P
qual é--partial --progress
: salve os arquivos parcialmente transferidos para futura retomada. Nota: os arquivos não terão um nome temporário, portanto, garanta que nada mais espere usar o destino até que toda a cópia seja concluída.--no-whole-file
para que qualquer coisa que precise ser reenviada use transferência delta. Ler metade de um arquivo parcialmente transferido geralmente é muito mais rápido do que escrevê-lo novamente.--inplace
para evitar a cópia do arquivo (mas apenas se nada estiver lendo o destino até que toda a transferência seja concluída)fonte