контрольная сумма удаленного файла - PullRequest
7 голосов
/ 23 июля 2011

Есть ли способ получить программу, которую я могу запустить через командную строку, которая будет делать контрольную сумму удаленного файла?Например, получить контрольную сумму https://stackoverflow.com/opensearch.xml

Я хочу иметь возможность получить обновление, когда новая запись rss / xml доступна.Я думал, что мог бы делать контрольную сумму файла время от времени, и если это отличается, то должно быть обновление.Я ищу сценарий оболочки, который проверяет новые данные rss / xml.

Ответы [ 5 ]

5 голосов
/ 08 сентября 2015

Быстрый способ сделать это с помощью curl - передать вывод в sha1sum следующим образом:

curl -s http://stackoverflow.com/opensearch.xml|sha1sum
5 голосов
/ 23 июля 2011

Чтобы сделать контрольную сумму для файла, вам нужно сначала загрузить ее.Вместо этого используйте If-Modified-Since в заголовках ваших запросов, и сервер ответит 304 неизмененным заголовком и без содержимого, если файл не был изменен, или с содержимым файла, если он был изменен.Вас также может заинтересовать проверка поддержки ETag на сервере.

Если загрузка файла не является проблемой, вы можете использовать md5_file , чтобы получить контрольную сумму md5 файла

1 голос
/ 06 мая 2014

локон

curl имеет опцию -z:

   -z/--time-cond <date expression>|<file>
          (HTTP/FTP) Request a file that has been modified later 
          than the given time and date, or one that has been modified before
          that  time.  The  <date expression> can be all sorts of date strings
          or if it doesn't match any internal ones, it is taken as a filename
          and tries to get the modification date (mtime) from <file> instead.
          See the curl_getdate(3) man pages for date expression details.

Итак, что вы можете сделать:

$ curl http://stackoverflow.com/opensearch.xml -z opensearch.xml -o opensearch.xml

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

Wget

wget также имеет возможность отслеживать временные спам -N

When running Wget with -N, with or without -r or -p, the decision as to whether
or not to download a newer copy of a file depends on the local and remote
timestamp and size of the file.

-N, --timestamping               Turn on time-stamping.

Так что, если wget можно использовать:

$ wget -N http://stackoverflow.com/opensearch.xml
1 голос
/ 23 июля 2011

Вы можете попробовать это под своим bash:

wget <http://your file link>

md5sum <your file name>
1 голос
/ 23 июля 2011

Сначала вы должны изучить заголовки HTTP, чтобы узнать, хочет ли сам сервер сообщить вам, откуда этот файл; считаться плохой формой извлекать весь файл, если вам не нужно.

В противном случае вам нужно будет использовать что-то вроде wget или curl для извлечения файла, поэтому я очень надеюсь, что вы не планируете работать с чем-то большим.

...