Como fazer com que o rsync divida os arquivos em pedaços menores e os combine ao terminar?

Como fazer com que o rsync divida os arquivos em pedaços menores e os combine ao terminar?

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-verifysinalizador com rsync.

Parece --partialum 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 --inplacesinalizador. 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 rsynco que você deseja: adicione a --inplacebandeira.

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 --inplaceflag (o que implica --partial), obterá o resultado desejado. Cada vez que uma transferência é interrompida, rsyncos 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 --inplacee 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.

informação relacionada