Исключить расширения файлов LFTP

Вопрос или проблема

Я пытаюсь синхронизировать директории с lftp, но не хочу загружать файлы таких типов, как .mp4 и .swf, которые известны своим большим размером. Но у меня возникают проблемы с регулярными выражениями, а также, похоже, с exclude-glob. Обе команды загружают все файлы.

Что я пробовал:

/usr/local/bin/lftp -u user,pass -e 'mirror -x ^(\.mp4|\.swf)$ $src $dest' ftp.host

&&

/usr/local/bin/lftp -u user,pass -e 'mirror -X swf $src $dest' ftp.host

В первом случае вам нужно экранировать вертикальную черту (|), так как в lftp это также специальный символ (также используйте двойные кавычки для подстановки переменных src и dest, экранируйте обратный слеш и знак доллара, чтобы предотвратить их интерпретацию оболочкой):

/usr/local/bin/lftp -u user,pass -e "mirror -x '^(\\.mp4|\\.swf)\$' $src $dest" ftp.host

Во втором случае вам нужно использовать шаблоны glob, например, так:

/usr/local/bin/lftp -u user,pass -e "mirror -X *.mp4 -X *.swf $src $dest" ftp.host

В любом случае я рекомендую сначала протестировать команду mirror вручную, а затем автоматизировать ее.

Ответ или решение

Задача исключения определённых типов файлов при использовании lftp для зеркального копирования директорий является общей потребностью для специалистов, работающих с большими объемами данных. Часто встречающиеся крупные файлы, такие как .mp4 и .swf, нужно исключать из загрузки, чтобы оптимизировать процесс передачи данных и сэкономить сетевые ресурсы. Для решения этой задачи важно правильно использовать команду mirror с флагами -x и -X в lftp.

Теория

Lftp — это мощный инструмент для передачи файлов через FTP, который поддерживает множество опций и настроек для гибкого управления процессом загрузки и передачи данных. Зеркальное копирование (команда mirror) в lftp позволяет синхронизировать содержимое удалённого FTP-сервера с локальным каталогом и используется для поддержания актуальности данных. Одной из ключевых задач при этом является фильтрация нужных и ненужных файлов.

В lftp для исключения файлов могут использоваться два ключевых параметра:

  • -x: позволяет использовать регулярные выражения для исключения файлов по определённым паттернам.
  • -X: позволяет использовать шаблоны (globbing patterns) для исключения файлов.

Пример

Рассмотрим пример использования регулярных выражений и шаблонов при исключении файлов.

  1. Регулярные выражения

Регулярные выражения дают большую гибкость, как показано в следующем примере:

/usr/local/bin/lftp -u user,pass -e "mirror -x '^(\\.mp4|\\.swf)$' $src $dest" ftp.host

В этом сценарии:

  • -x '^(\\.mp4|\\.swf)$': используется для указания того, что файлы с расширениями .mp4 и .swf не должны загружаться. Синтаксис также предполагает использование двойных кавычек и экранирование специального символа $ для предотвращения его интерпретации оболочкой.

Регулярные выражения в lftp работают следующим образом: ^ указывает на начало строки, \\. экранирует точку, чтобы обозначать её как символ, а не как специальный знак регулярного выражения, и \$ обозначает конец строки.

  1. Glob-шаблоны

Шаблоны облегчают задачу, когда необходимо исключить файлы по простым маскам:

/usr/local/bin/lftp -u user,pass -e "mirror -X *.mp4 -X *.swf $src $dest" ftp.host

В этом сценарии:

  • -X *.mp4 -X *.swf: применяется для исключения файлов по расширению. Это более прямой способ исключения файлов с известными расширениями.

Применение

При настройке lftp для зеркального копирования директорий необходимо внимательно тестировать команду с использованием вручную подобных конфигураций. Рекомендуется проводить тестирование в контролируемой среде перед автоматизацией процесса, чтобы убедиться, что исключение файлов работает как предполагалось. После установки и проверки команд можно будет безбоязненно включить их в автоматизированные скрипты, что существенно упростит управление процессом передачи данных.

Заключение

Правильная настройка lftp для исключения файлов может значительно повысить эффективность работы с данным инструментом. Заблаговременное исключение файлов с нежелательными расширениями, такими как .mp4 и .swf, позволяет сэкономить ресурсы и увеличить скорость копирования необходимой информации. Применение регулярных выражений и шаблонов предназначается для различных сценариев применения, где либо необходима высокая точность, либо простота в применении. Поэтому каждый специалист IT должен выбрать и протестировать наиболее подходящий для своих нужд подход.

Оцените материал
Добавить комментарий

Капча загружается...