Копирование полного архива снова и снова, чтобы заменить несколько обновл©нных файлов является дорогим мероприятием, как в смысле потребляемой пропускной способности канала связи, так и времени на выполнение. Вот почему все средства, предназначенные для выполнения зеркального копирования, предлагают методы частичной замены файлов.
Такой механизм обновления обозначает, что удал©нный сервер сканируется на предмет определения новых файлов. Только эти файлы будут копироваться на ваш компьютер, замещая прежние версии этих файлов.
Файл рассматривается как новый в следующих случаях:
В GNU Wget режим проверок отметок времени включается параметром
-timestamping (-N) или с помощью директивы
timestamping = on
в файле .wgetrc. Если такой параметр использован, то каждый раз
когда конкретный файл планируется программой Wget к копированию,
программа проверяет существует ли уже файл с таким именем, а если
существует, то проверяет какой файл старше (удал©нный или локальный).
Копирование производится лишь тогда, когда локальный файл старше
удал©нного. Если локальный файл с таким именем не существует или его
размер отличается от удал©нного, то производится копирование независимо
от времени модификации.
Несколько дней спустя, вы проверяете изменилась ли информация, которую вы
уже копировали
wget -N http://www.gnu.ai.mit.edu/
В данном случае Wget сначала проверит, какие файлы старше,
удал©нные
или локальные. Скопированы будут лишь те файлы, которые изменились за эти
несколько дней.
То же самое имеет место и для FTP.
Если вы желаете получать зеркальную копию каждую неделю, вы могли бы
выдавать каждую неделю следующую команду:
wget -timestamping -r ftp://prep.ai.mit.edu/pub/gnu/
Если файл существует локально, Wget проверит время модификации файла, затем пошл©т запрос на удал©нный сервер. Если локальная копия файла окажется старее, то файл будет скопирован. Если нет, то Wget перейд©т к следующим файлам. В дополнение, Wget проверит размер файла, если размеры различны, файл будет скопирован.
Для каждого каталога FTP Wget использует команду LIST,
чтобы
получить оглавление каталога. Программа пытается анализировать оглавление,
предполагая, что оно имеет такой же формат как ответ команды
ls -l
в операционной системе UNIX.
В остальном - все происходит так же как и в HTTP.