rsync para SFTP enquanto move os uploads concluídos para outra pasta

1

Vou mover muitos dados (30 GB) para um servidor dividido em vários arquivos tar.gz de 200 MB. Isso vai levar tempo, e eu precisarei parar e reiniciar meu computador durante esse processo, interrompendo assim a transferência.

O que eu gostaria de fazer é o seguinte:

find . -maxdepth 1 -type f -iname "*.tar.gz.*" | while read file ; do
    scp "$file" username@host:/backup/
    mv "$file" "already-done/"
done

Infelizmente, não consigo copiar uma chave SSH para essa caixa porque é uma configuração não padrão da qual não tenho controle, portanto, preciso inserir minha senha manualmente sempre que criar uma conexão, o que torna enquanto loop acima improdutivo. Existe uma maneira de usar o rsync para copiar arquivos para este servidor em uma única conexão SSH persistente, enquanto movo os backups concluídos para outro diretório para que eu não acabe copiando-os novamente em uma inicialização recente?

    
por Naftuli Kay 18.01.2013 / 21:13

1 resposta

2

Eu tenho duas sugestões:

  1. Substitua sua chamada para scp por uma para rsync, que é projetada para lidar com esse tipo de situação.
  2. Em vez de usar um loop while, basta usar um glob para chamar os arquivos diretamente. Como seu comando find está usando uma profundidade máxima de 1, você pode fazer apenas rsync -t *.tar.gz.* username@host:/backup/ . O Rsync cuidará de verificar quais arquivos já foram copiados e a precisão desses arquivos. Ele só enviará alterações na conexão.
por 18.01.2013 / 21:21

Tags