@ Карта сайта News Автора!

Bog BOS: Дублирование ftp-сайта (mirror.pl)

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение файла: 2007.12.25
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: Дублирование ftp-сайта (mirror.pl)

mirror (mirror.pl) позволяет копировать каталог с удаленного ftp-сервера на локальный диск вместе с его содержимым и поддерживать локальную копию в синхронном состоянии (удаляет файлы в локальной копии, если они удалены на сервере). Обладает гибкой настройкой, не копирует уже имеющиеся и не изменившиеся файлы (проверка по дате и размеру). Собирает журнал, сжимает, разжимает, переименовывает, бьет на куски на ходу, докачивает оборванные файлы и т.д. и т.п. Для разового копирования лучше использовать wget, а если есть доступ к удаленному серверу, то - rsync (он отслеживает изменения внутри файлов и работает быстрее). В дополнение к базовому уровню (mirror, mirror.pl) реализовано управление параллельным копированием нескольких каталогов с одного или нескольких серверов с отслеживанием интервала синхронизации (mm.pl, mirror-master) и процедура для ежедневного выполнения для вызова из cron (mirror.nightly). Позволяет копировать символьные ссылки (но не жесткие!). Сохраняет время модификации, но не сохраняет идентификаторы владельца и группы. Требует perl 5.004. Последняя версия - 2.9 (1998). Следует учитывать, что оглавление копируемого каталога (и его подкаталогов) держится в оперативной памяти во время работы, так что копирование некоторых сайтов требует много места в ОП (CPAN - 70 MB и 7 минут CPU на Celeron 450!). Это особенно важно, если вы задаете параллельное копирование нескольких сайтов.

Установка для широкомасштабного использования

Использование mirror

mirror можно использовать в 2 режимах: с использованием описаний пакетов и без них. Если вам используете mirror без описаний пакетов, то, скорее всего, вам нужен не mirror, а wget, поэтому я описываю только первый метод использования:

mirror флаги имя-файла-содержащего-описание-пакета ...

Перед чтением описаний пакетов загружается файл с именем mirror.defaults из $PATH (или .), содержащий значения по умолчанию различных параметров. Затем mirror по очереди читает описания пакетов (единиц работы), отсоединяется от предыдущего сайта, подсоединяется к новому сайту, получает оглавления удаленной и локальным каталогом, сравнивает их для получения списка изменившихся файлов, фильтрует список с помощью шаблона исключений и других критериев, загружает файлы из списка с сайта (используется временное имя файла .in.имя-файла. на случай аварийного завершения), сжимает и разбивает полученный файл, переименовывает его, удаляет локальные файлы при удалении оригинала на сервере.

Флаги:

Формат описания пакетов (и mirror.defaults)

Каждый пакетный файл может содержать описания нескольких пакетов (заданий на копирование и синхронизацию). Пакет с именем defaults (обычно из файла mirror.defaults) содержит значения параметров по умолчанию. Пустые строки и строки, начинающиеся с #, рассматриваются как комментарии. Знак "&" в конце строки означает продолжение текста оператора на следующей строке (знак "&" и пробелы в начале строки удаляются). Описание пакета состоит из операторов, устанавливающих значения параметров вида (пробелы за знаками "=" и "+" являются значимыми!):

имя=значение (присвоение значения)
  или
имя+значение (добавление значения в конец строки значения по умолчанию)

Пакеты разделяются оператором, определяющим имя пакета:

package=имя-пакета

Параметры

mirror master

Подсистема mirror-master (mm, mm.pl) позволяет организовать ежедневное зеркалирование множества серверов в параллельном режиме с установкой интервалов между успешными и неуспешными копированиями.

Головной программой является скрипт mirror.nightly, который надо поместить в ~mirror (и его подпрограмму prune_logs.pl), отредактировать (имя почтовой программы и кому посылать отчеты, куда класть ежедневные журналы) и запускать каждую ночь из cron. Он вызывает mirror-master, извлекает из журнала обработки интересные сведения и посылает их в указанный почтовый ящик.

mirror-master использует подпрограмму pkgs_to_mmin (ключ "-y" задает минимальный интервал (в часах) обращения к сайту после его успешного копирования; ключ "-n" задает минимальный интервал обращения к сайту после неудачного обращения к нему) и управляющий файл mmin (в ~mirror). Управляющий файл позволяет установить количество процессов mirror, запускаемых параллельно, и интервалы обращения к сайту.

Ссылки

@ Карта сайта News Автора!

Bog BOS: Дублирование ftp-сайта (mirror.pl)

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru