SCP - Требуется ли контрольная сумма?

Я резервирую и передаю файлы автоматически каждую ночь через scp.

Я понимаю, что получаю контрольные суммы на уровне пакетов через сам протокол, но мне интересно, как лучше всего убедиться, что передача не провалилась или не была выполнена частично и т. Д.

Я мог бы использовать rsync, но мои потребности просты, и я просто хочу убедиться, что:

  1. не было ошибки при передаче
  2. Повторите попытку, если это было сделано (чтобы я не обнаружил, что у меня 4 дня устарели, когда я иду на выздоровление)

2 ответа

Решение

scp не гарантирует целостность файла, поэтому было бы целесообразно сравнить контрольную сумму между источником и местом назначения.

Вы упоминаете, что ваши потребности просты, но rsync не обязательно добавляет сложности и предлагает значительно больше функций, которые помогут вам чувствовать себя более комфортно, если ваши синхронизированные данные являются достоверными.

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

Если $? (состояние выхода) не равно 0 (успех), затем повторите / предупреждение / и т. д.... Если вы синхронизируете целые каталоги, rsync также гораздо больше подходит для этого, особенно если вам нужно повторить попытку в случае сбоя, так как добавочная синхронизация будет значительно быстрее с каждым последующим пробегом.

Я не совсем уверен, как rsync не соответствует вашим простым потребностям.

rsync -avPe ssh user @ host: / that / dir / Go / здесь

если вы действительно хотите использовать scp, просто зациклите ваш scp и проверьте его состояние выхода... что-то вроде...


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

scp вернет 0 в случае успеха и> 0 в случае ошибки.

Другие вопросы по тегам