SCP - É necessário um checksum?

3

Estou fazendo backup e transferindo arquivos automaticamente todas as noites via scp.

Eu percebo que recebo somas de verificação em nível de pacote através do próprio protocolo, mas estou pensando qual é a melhor prática para garantir que uma transferência não falhe, ou parcialmente concluída, etc.

Eu poderia usar o rsync, mas minhas necessidades são simples e só quero garantir isso:

  1. não houve erro na transmissão
  2. tente novamente se houver (para que eu não descubra que estou com 4 dias de folga quando for me recuperar)
por Scott 13.07.2011 / 00:00

2 respostas

6

O scp não garante a integridade do arquivo, portanto, uma comparação de soma de verificação entre a origem e o destino seria prudente.

Você mencionou que suas necessidades são simples, mas o rsync não necessariamente adiciona complexidade e oferece significativamente mais recursos que farão com que você se sinta mais confortável para que seus dados sincronizados sejam legítimos.

rsync -ave ssh /your/source/file remotehost:/your/dest/file

Se $? (status de saída) não for 0 (sucesso), tente novamente / alerta / etc ... Se você estiver sincronizando diretórios inteiros, o rsync também é muito mais adequado para isso, especialmente se você precisar repetir falha, pois as sincronizações incrementais serão significativamente mais rápidas a cada execução sucessiva.

    
por 13.07.2011 / 00:23
2

Não sei ao certo como o rsync não se alinha com suas necessidades simples.

rsync -avPe ssh user@host:/that/dir /goes/here

se você realmente quiser usar o scp, basta fazer um loop em seu scp e testar sua condição de saída .. algo como ...


#!/bin/bash
STATUS=1
while [ $STATUS -ne 0 ]; do
    echo "scp'ing..."
    scp -r thisstuff/ user@host:/overthere
    STATUS=$?
done

scp retornará 0 em sucesso, e > 0 em erro.

    
por 13.07.2011 / 00:23