Я искал возможность использовать AWS cli для проверки целостности данных, чтобы убедиться, что резервная копия была правильно перенесена с файлового сервера Linux на AWS s3. Точно так же я хотел бы убедиться, что при восстановлении файла из резервной копии на файловый сервер Linux он также был правильно передан.
Я проверил etag, сохраненный с объектом на S3, потому что он выглядит как md5sum. Однако, если файл передается как составной в случае больших файлов, etag больше не действует.
Но прежде чем я пойду дальше и попытаюсь вычислить сумму MD5 для того, что только что было синхронизировано с S3, каждый раз, действительно ли это необходимо для этого? При использовании rsync между файловыми системами Linux через Интернет не принято выполнять md5sum для переданных файлов для их проверки. Поскольку предполагается, что я думаю, что rsync уже позаботился об этом?
Мне интересно, выполняет ли AWS cli sync уже проверку целостности данных за нас?
Краткий ответ - да, aws s3 sync
и aws s3 cp
вычислите контрольную сумму MD5 и, если она не совпадает, после завершения загрузки попытается повторить до пяти раз.
Более длинный ответ:
Интерфейс командной строки AWS рассчитает и автоматически заполнит заголовок Content-MD5 как для стандартной, так и для составной загрузки. Если контрольная сумма, вычисляемая S3, не соответствует предоставленному Content-MD5, S3 не сохранит объект, а вместо этого вернет сообщение об ошибке обратно в интерфейс командной строки AWS. Интерфейс командной строки AWS будет повторять эту ошибку до 5 раз, прежде чем отказаться.
Если запрос подписан Signature Version 4
тогда контрольная сумма MD5 не вычисляется.
Обратите внимание, что интерфейс командной строки AWS добавит заголовок Content-MD5 как для высокоуровневых команд aws s3, выполняющих загрузку (aws s3 cp, aws s3 sync), так и для низкоуровневых команд s3api, включая aws s3api put-object и aws s3api upload. -часть.
Ссылка