Quando corro rsync
do meu disco rígido para uma unidade flash montada, é bastante lento. Estou pensando em usar --whole-file
switch.
Você poderia explicar, por que é mais rápido? Por que não devo ter medo de usá-lo? E quais são os prós e contras de usá-lo. Não encontrei muitas informações a respeito.
comando rsync:
rsync -avh --delete --no-o --no-g /home/xralf/audio /media/extdevice/rsync_backups/
Eu rsync
do disco rígido (sistema de arquivos ext4) para a unidade flash (sistema de arquivos vfat).
Vamos começar com a documentação para
--whole-file
(-W
) encontrada em seu sistema comman rsync
, que primeiro explica o que ele faz:e depois continua dizendo que,
Existem fundamentalmente dois modos de operação para
rsync
.Cópias locais (incluindo sistemas de arquivos de rede onde tanto a origem quanto o destino parecem fazer parte do sistema de arquivos local). Nesse caso,
rsync
opta por copiar um arquivo inteiro ou ignorá-lo, dependendo do tamanho do arquivo e do carimbo de data/hora da modificação. A--whole-file
opção está habilitada nesta situação, portanto, não há otimização incremental. Na verdade, quase sempre não faria sentido habilitar isso, pois você gastaria mais tempo lendo os arquivos de origem e destino para compará-los do que apenas copiar o arquivo em primeiro lugar.Cópias remotas (onde um caminho contém construções
{host}:{path}
de{host}::{path}
estilo). Nesta situaçãorsync
pode executar uma instância de si mesmo na máquina local e outra no remoto. Essas duas instâncias podem ler independentemente o arquivo de origem e de destino para compará-los, resultando em um caso otimizado de que apenas as alterações são transmitidas pela rede. Aqui,--whole-file
não está habilitado por padrão.No cenário #1, a
--whole-file
opção é habilitada por padrão e levará a cópias de arquivos que são quase sempre mais rápidas do que transferências incrementais. (A exceção é se você puder ler um disco local significativamente mais rápido do que gravar nele.)Esta é a situação que você está usando (cópia local para local). O grande problema aqui é que você está gravando em um sistema de arquivos VFAT, que tem apenas dois segundos de granularidade em seus registros de data e hora de arquivo. Isso significa que muitos arquivos
rsync
os considerarão desatualizados e os copiarão novamente - desnecessariamente.A correção aqui é usar
--modify-window=1
(veja a documentação,man rsync
, para mais detalhes). Eu também li que se você estiver em um fuso horário que muda entre o verão e o inverno, você deve executar orsync
comando em UTC para evitar complicações associadas ao fuso horário, mas eu mesmo não testei isso:No cenário 2, a
--whole-file
opção está desabilitada por padrão e levará a transferências incrementais de arquivos que geralmente são mais rápidas do que enviar o arquivo inteiro sem cuidado. A exceção é quando o envio de dados pela rede é mais rápido do que calcular as diferenças entre origem e destino; este pode ser o caso em redes de 10 Gb/s, por exemplo.Conclusão: em geral, tentar enganar
rsync
a otimização integrada do 's não vai melhorar as coisas, e muitas vezes pode tornar as velocidades de transferência muito piores. Não habilite nem desabilite--whole-file
, mas apenas deixersync
escolher por si mesmo. No que diz respeito aos sistemas de arquivos VFAT, tente evitá-los, mas se você não puder, esta é uma situação em que você precisa darrsync
uma ajuda extra.