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

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

4 ответа

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

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

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

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 вашего файла.

Смежные вопросы:

Другие вопросы по тегам