Сравнение локального файла с удаленным файлом - PullRequest
1 голос
/ 06 августа 2010

У меня следующая проблема: у меня есть локальный файл .zip и файл .zip, расположенный на сервере.Мне нужно проверить, отличается ли файл .zip на сервере от локального;если это не так, мне нужно вытащить новый с сервера.Мой вопрос: как мне сравнить их, не загружая файл с сервера и сравнивая их локально?

Я мог бы создать хеш MD5 для zip-файла на сервере при создании файла .zip и затем сравнитьс MD5 моего локального .zip файла, но есть ли более простой способ?

Ответы [ 3 ]

2 голосов
/ 06 августа 2010

Краткий ответ: Вы не можете.

Длинный ответ: Для сравнения с zip-файлом на сервере кто-то должен прочитать этот файл.Либо вы можете сделать это локально, что потребует извлечения, либо вы можете попросить сервер сделать это за вас.Можете ли вы запустить код на сервере?

Изменить

Если вы можете запустить Python на сервере, почему бы не хэшировать файл и сравнивать хэши?

import hashlib
with open( <path-to-file>, "rb" ) as theFile:
    m = hashlib.md5( )
    for line in theFile:
        m.update( line )
with open( <path-to-hashfile>, "wb" ) as theFile:
    theFile.write( m.digest( ) )

, а затемсравнить содержимое hashfile с локально сгенерированным хешем?

Другое редактирование

Вы попросили более простой способ.Подумайте об этом абстрактно:

  • Вы не хотите загружать весь zip-файл.
  • Следовательно, вы не можете обработать весь файл локально (потому что это потребовало бы чтения всего этого с сервера, что эквивалентно загрузке!).
  • Следовательно, вам необходимо выполнить некоторую обработку на сервере.В частности, вы хотите получить небольшой объем данных, который «кодирует» файл, так что вы можете извлечь этот небольшой объем данных без извлечения всего файла.
  • Но это хеш!

Следовательно, вам нужно выполнить какое-то хеширование.Учитывая это, я думаю, что вышеупомянутое довольно просто.

0 голосов
/ 06 августа 2010

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

0 голосов
/ 06 августа 2010

Я хотел бы знать, как вы собираетесь сравнивать их локально, если бы это было так. Вы можете применять ту же логику для удаленного сравнения.

...