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

Как проверить целостность удаленной передачи файлов

Есть ли способ проверить целостность удаленного файла? В настоящее время я пересылаю большое количество файлов и папок с ftp-сервера на другой удаленный сервер с помощью wget, но у меня нет возможности узнать, повреждены ли файлы. Есть ли способ проверить целостность передачи, получив что-то вроде хэша MD5 удаленных файлов? Есть ли другой протокол передачи файлов, поддерживающий это?

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

В зависимости от инструмента, который вы используете, можно автоматически хешировать и проверять загруженные файлы, единственный инструмент, который может сделать это, сразу приходит на ум, хотя это DownThemAll! аддон для Firefox.

То, что я обычно использую для подобных ситуаций, - файл хеш-манифеста, созданный md5deep в Windows вы можете использовать md5sum, если вы используете Linux / UNIX или md5 в OS X. Используя md5deep I CD, перейдите в папку, содержащую файлы для передачи, и выполните команду:

md5deep -l -r *>manifest.md5

На удаленном конце после передачи файлов и манифеста вы должны выполнить команду:

md5deep -l -r -x manifest.md5 *

И он покажет список каждого файла, который НЕ соответствует хэш-значению в манифесте.

Хотя мне очень нравятся ответы md5deep и rsync (и за них проголосовали оба), похоже, что вы сталкиваетесь с действительно сложной группой людей на исходном сервере. Альтернатива, которая действительно уродлива, но лучше, чем ничего, - это отсортировать журнал передачи для размеров файлов, а затем сравнить их локально.

wget -nv -o log.txt ftp://ftp.myserver.com/welcome.msg

... создал строку файла журнала, которая выглядит следующим образом:

2010-01-01 09:47:17 URL: ftp://ftp.myserver.com/welcome.msg [470] -> "welcome.msg" [1]

Итак, используя небольшой скрипт-фу с каким-нибудь awk или еще чем-то, вы можете вытащить имя файла и размер файла, а затем, по крайней мере, сравнить их соответствие. Я повторяю, что это некрасиво и должно стать вашим последним решением ... но оно работает.

Это долгий путь, но если сервер поддерживает php, вы можете воспользоваться этим.

Сохраните следующее как php файл (скажем, check.php) в той же папке, что и ваш name_of_file.txt файл:

<? php
echo md5_file('name_of_file.txt');
php>

Затем перейдите на страницу check.php, и вы должны получить хеш md5 вашего файла.

Связанные вопросы: