
Tenho uma Internet doméstica complicada, o rsync pode ser desconectado a qualquer momento e meus arquivos grandes terão que ser reiniciados desde o início.
Existe uma maneira de dividir, digamos, um arquivo de um GB em incrementos de 50 MB, enviá-los para o destino e depois combiná-los? Dessa forma, mesmo que o arquivo seja cortado, terei uma porcentagem dele salva na outra extremidade.
Responder1
Essa pessoa já deu uma ótima explicação: https://unix.stackexchange.com/a/165417/446381
Então, se eu quiser atingir meu objetivo, devo usar o --append-verify
sinalizador com rsync.
Parece --partial
um pouco redundante para mim. Ele é transferido como arquivos ocultos e posteriormente renomeado para arquivo parcial. O que eu não gosto, porque um control-C pode atrapalhar esse processo de renomeação.
Responder2
Versão curta: para tornar o rsync melhor ao reiniciar de onde parou, adicione o --inplace
sinalizador. Não há necessidade de dividir arquivos grandes.
Versão mais longa:
Dividir o arquivo em arquivos menores, transferindo cada um, é uma boa ideia. No entanto, você está trabalhando demais. Internamente, o rsync divide os arquivos em pedaços de 64k... mais ou menos. Existe uma maneira de fazer rsync
o que você deseja: adicione a --inplace
bandeira.
Vejamos o problema maior que você está enfrentando: sua conexão com a Internet não é confiável e você precisa de uma maneira de enviar arquivos grandes.
Se você usar --inplace
flag (o que implica --partial
), obterá o resultado desejado. Cada vez que uma transferência é interrompida, rsync
os arquivos serão deixados em um estado que torna eficiente continuar de onde parou na próxima vez que você executar (o mesmo) rsync
.
Basta usar --inplace
e executar o comando rsync várias vezes até que tudo seja copiado.
Se você for muito paranóico, depois que todos os arquivos forem copiados com sucesso, faça mais uma passagem adicionando o sinalizador --checksum
( -c
). Isso fará uma nova verificação byte a byte muito lenta, em vez de usar o carimbo de data/hora do arquivo para saber quais arquivos podem ser ignorados. Como todos os arquivos já foram copiados corretamente, não deverá haver mais trabalho a fazer. Dito isto, às vezes faço isso apenas para ter paz de espírito. Você não deseja usar esse sinalizador durante as execuções iniciais porque será muito lento e um desperdício, pois relerá cada bloco de cada arquivo.