Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

sinxronizacija_papok_po_ftp [2013/10/29 17:18] (текущий)
Строка 1: Строка 1:
 +====== Синхронизация папок по ftp ======
  
 +Встала задача синхронизировать папки по ftp.
 +Если бы можно ​ было синхронизировать по ssh, то использовал бы конечно rsync.
 +Выбор пал на самый простой вариант для nix систем - lftp 
 +
 +Использовать ее крайне легко. Синхронизация текущей папки с папкой на удалённого сервера (синхронизировать локальный каталог с удалённым),​ т.е. закачка с сервера. ​
 +<code bash>$ lftp -e '​mirror -e каталог-на-сервере локальный-каталог;​ bye;' -u логин,​пароль удалённый.хост</​code>​
 +
 +Синхронизация папки на удалённом сервере с текущей папкой (синхронизировать удалённый каталог с локальным),​ т.е. **закачка на сервера**. ​
 +<code bash>$ lftp -e '​mirror -R локальный-каталог каталог-на-сервере;​ bye;' -u логин,​пароль удалённый.хост</​code>​
 +
 +Наиболее оптимальное использование опций для синхронизации папки на удалённом сервере с текущей папкой (синхронизировать удалённый каталог с локальным),​ т.е. **закачка на сервер**. ​
 +<code bash>$ lftp -e '​mirror --verbose -с -R локальный-каталог каталог-на-сервере;​ bye;' -u логин,​пароль удалённый.хост</​code>​
 +
 +Можно также использовать скрипты,​ например запуск команды ​
 +<code bash>​lftp -f sync_script.x</​code>​
 +
 +Где в скрипте находятся следующие данные: ​
 +<code bash>
 +open логин:​пароль@удалённый.хост
 +mirror -R локальный-каталог каталог-на-сервере
 +exit
 +</​code>​
 +
 +Конфигурация.
 +Конфигурационный файл **.lftprc**,​ предсталяет собой просто команды lftp которые даются ему перед запуском. Основные установки производятся командой set (да-да, про них тоже есть в help'​е).
 +Например пара строк, позволяющих лазить свободно на виндовые ФТП, с русскими именами файлов:​
 +<​code>​
 +set ftp:charset cp1251
 +set mirror:​set-permissions off
 +set ftp:​use-telnet-iac no
 +</​code>​
 +а так же несколько алиасов,​ команд,​ для более быстрого набора этого дела:
 +<​code>​
 +alias 5.7 open 192.168.5.7
 +alias sserv open 192.168.61.193
 +alias localhost open 127.0.0.1
 +</​code>​
 +Полезные параметры: ​
 +  * -e commands - выполняет команду и не завершает соединение
 +  * -f script_file - выполняет команды из файла и завершает соединение
 +  * -c commands ​ -выполняет команду и завершает соединение
 +  * mget filename - позволяет скачать файл filename, опция -c как и в в wget'​е позволяет "​докачать"​ файл.
 +  * mirror dirname позволяет скачать директорию. ​
 +    * -c продолжать задание копирования,​ если это возможно
 +    * --parallel[=N] -закачка параллельно ​ N файлов
 +    * --verbose[=level] информативность вывода.
 +    * --no-symlinks ​ Исключать симлинки
 +    * --no-empty-dirs ​ -исключать пустые папки
 +    * --only-newer ​  - копировать только новые файлы, сравнение размеров игнорируется. Старые заменяются новыми.
 +    * --loop ​  - будет работать "по кругу",​ пока есть какие-то изменения
 +    * --exclude - исключить список файлов (регулярное выражение,​ как в egrep)
 +    * --include - включая список файлов регулярное выражение,​ как в egrep)
 +    * --exclude-glob - исключить список файлов по образцу (например ​ '​*.zip'​) ​
 +    * --include-glob - включить список файлов по образцу (например '​*.zip'​)
 +  * --log=FILE - писать выполняемые команды в FILE
 +  * --just-print,​ --dry-run ​ - тоже самое, что --script=FILE. Позволяет просмотреть,​ какие команды будут выполнены
 +  * --script=FILE - пишет в FILE командны,​ но не авполняет их
 +
 +Также, как альтернативу можно рассмотреть программу,​ написанную на perl - FTPSync, т.к. при необходимости ее можно достаточно просто переделать под себя или добавить нужный функционал. Есть хорошая статья по ее использованию - FTPSync. FTP-синхронизация без проблем.
 +
 +//​Примечание//:​ Если Вы передаете важные файлы в больших объемах,​ то лучше использовать другие средства синхронизации,​ например rsync, т.к. ​ работает быстрее и надежнее,​ а также имеет функцию проверки хеша фалов!. Грустный опыт показал,​ что скопированный файл имеющий размер идентичный исходному,​ может отличаться от него, что собственно и подтверждают их хеши :(. Вот Вам и надежная передача по TCP... Когда сам столкнулся с таким моментом,​ был очень сильно удивлен,​ т.к. считал,​ что в принципе такого быть не должно.
 +
 +//​Примечание 2//: На больших каталогах работает долго!(
sinxronizacija_papok_po_ftp.txt · Последние изменения: 2013/10/29 17:18 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика