SCP - Требуется ли контрольная сумма?
Я резервирую и передаю файлы автоматически каждую ночь через scp.
Я понимаю, что получаю контрольные суммы на уровне пакетов через сам протокол, но мне интересно, как лучше всего убедиться, что передача не провалилась или не была выполнена частично и т. Д.
Я мог бы использовать rsync, но мои потребности просты, и я просто хочу убедиться, что:
- не было ошибки при передаче
- Повторите попытку, если это было сделано (чтобы я не обнаружил, что у меня 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 в случае ошибки.