copia numerosos arquivos / pastas no linux com enfileiramento e a capacidade de quebrar e continuar

0

Estou copiando terabytes de dados de um sistema OLD OLD * nix antigo. Eu poderia gastar o dinheiro para comprar um novo hardware para conectar as unidades, mas eu quero evitar gastar dinheiro.

O sistema é de baixa qualidade. Congela e trava muito. Então eu tenho que reiniciar o processo de cópia toda vez. E leva muito tempo para "recuperar o atraso" porque tem que "pular" os arquivos que já copiou.

Eu poderia usar rsync , mas o sistema é tão lento que toda vez que eu começo um rsync , a varredura / comparação inicial de inventário demora um pouco.

Então eu pensei em gerar uma lista única de todos os arquivos que precisavam ser copiados e salvá-los em um arquivo. Então eu poderia ter um script que passasse pelo arquivo e copiasse esse arquivo e apagasse essa linha. Se o script / cópia falhar no meio, eu poderia continuar de onde parou. Eu não sei como manipular / processar a parte que excluiria a linha da fila, mas ao tentar descobrir isso, percebi que deve haver alguma ferramenta disponível publicamente ou script que já faz o que eu preciso.

Assim, o objetivo é passar por uma fila de entrada de arquivos para copiá-los e copiá-los e, quando terminar uma cópia, eles serão removidos da fila. Eu não preciso disso para este caso de uso específico, mas ele deve ser capaz de acomodar novas entradas sendo adicionadas à fila. E, é claro, a fila deve ser baseada em arquivos, para que possa ser continuada a partir de um erro / problema do sistema.

Alguém sabe de um?

    
por IMTheNachoMan 18.10.2018 / 04:33

1 resposta

0

Embora seja recomendado usar uma ferramenta "profissional" e comprovada para cumprir essa tarefa de forma confiável, aqui está uma abordagem rápida e simples para uma solução. A exclusão de uma linha em um arquivo pode falhar devido a problemas do sistema, portanto, manter os nomes dos arquivos copiados com êxito em um arquivo de log parece um pouco mais seguro. Crie um arquivo "todo" contendo os arquivos para copiar, por exemplo redirecionando ls resultados e um arquivo "log" vazio. Então corra

comm -2 -3 todo log |
while read FN
  do echo cp "$FN" "new/path/to/$FN" && echo "$FN" >> log || echo "$FN" >&2
  done 2>>errlog

Sempre que isso for executado, os arquivos já copiados e registrados serão ignorados. Você pode querer sort os arquivos "todo" para evitar que o arquivo de aviso " comm " não esteja em ordem de classificação ".

    
por 18.10.2018 / 10:38