Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

если вы действительно хотите использовать 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 в случае ошибки.