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

Необходимо ли проверять целостность файла при успешном выполнении curl

У меня есть куча файлов на S3, и мне нужно загрузить и обновить их через командную строку (BASH) на нескольких устройствах.

Что я делаю (на данный момент):

  1. Запросите заголовок файла с помощью -I и извлеките поле ETag
  2. Проверить md5sum локального файла
  3. Если они не совпадают (или файл еще не существует локально), я загружаю файл с -f получить надежный статус выхода
  4. Проверьте $? завитка
  5. Если это 0, я сравниваю ожидаемую md5sum с md5sum загруженного файла.

Что бы я хотел сделать:

  1. Если файл существует локально, получите его md5sum
  2. Скачать файл с --header 'If-None-Match:<md5sum of local file>
  3. Если статус выхода 0 -> готово!

Мой вопрос: можно ли рассчитывать на статус выхода локонов? Т.е. когда статус выхода равен 0, является ли загруженный файл действительным (предполагается, что моя файловая система тем временем не повреждена)?

Извините, что недостаточно комментариев для комментариев, но вы можете посмотреть на это и учесть, что etag не соответствует вашим ожиданиям для любого файла, который был загружен из нескольких частей. https://stackoverflow.com/questions/6591047/etag-definition-changed-in-amazon-s3

Что касается проверки файла, я бы сказал, что да, если вы хотите быть уверены на 100%. Тот факт, что вы могли получить все правильные биты по сети, не означает, что они были правильно записаны на ваш жесткий диск. Не все настолько критично, что вы должны проверять, но в целях архивирования я всегда проверяю, и вы были бы удивлены, сколько раз мне приходилось возвращаться, чтобы настроить способ, которым файлы попадают в конечный пункт назначения, потому что на плохих дисках и т. Д.