Синхронизация файлов по FTP

Тема в разделе "Десктопный Linux", создана пользователем Veditos, 19 мар 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Veditos

    Veditos

    Регистр.:
    1 сен 2008
    Сообщения:
    155
    Симпатии:
    19
    Извиняюсь, возможно запостил вопрос не в тот раздел.
    Стоит задача - настроить автоматическую синхронизацию файлов и папок между двумя серверами. На одном сервере стоит Ubuntu Linux, на втором FreeBSD. Хотелось бы реализовать это напрямую между двумя серверами.
    Кто что может посоветовать? Какие есть для этого решения?
     
  2. symbolz

    symbolz Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    75
    Симпатии:
    14
    можно очень просто это сделать
    crond + rsync
     
  3. Veditos

    Veditos

    Регистр.:
    1 сен 2008
    Сообщения:
    155
    Симпатии:
    19
    Их нужно запускать только с одной стороны? Если изменения будут призводиться только на одном сервере?
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Да, там откуда надо сливать.
    Или надо синхронизировать в обе стороны?
     
  5. symbolz

    symbolz Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    75
    Симпатии:
    14
    не помню за опцию, но думаю в мане все это есть. Если не может в обе стороны синхрить(в чем я сомневаюсь), то можно два скрипта один в одну, другой в другую )))

    Rsync - современный способ синхронизации файлов

    Итак, для чего нужен RSync?

    RSync — был разработан как замена старой команды rcp. С помощью которой производилось копирование файлов между машинами UNIX-систем. RSync очень удобен, так как его алгоритм построен так, что он отслеживает как изменился файл и копирует только необходимые части. Причём для выявления изменений, ему не надо сравнивать два файла. И работает это очень быстро.

    Кроме того, очень полезным будет его способность работать через ssh. Что обеспечивает шифрование канала, что очень важно, если вы синхранизируете два сервера в сети интернет. Для уменьшение трафика, rsync так-же умеет сжимать данные, при передаче по сети. Это очень мощная утилита, и надо быть с ней осторожным, с её помощью можно испортить данные.

    Мы будем рассматривать rsync как средство синхронизации файлов между серверами, а не как систему раздачи файлов. В первом случае мы используем ssh, а во втором нам необходимо запускать сервер rsync.

    Разберём на примере:

    rsync -e ssh --progress -lzuogthvr --compress-level=9 \
    --delete-after root@<MASTER SERVER>:/home/<USER> /home/

    или

    rsync -e ssh --progress -lzuogthvr --compress-level=9 \
    --delete-after /home/<USER> root@<MASTER SERVER>:/home/

    зависит от того, в какую сторону синхронизируем файлы

    Обратите внимание на последний слеш, так как он имеет значение для rsync. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.

    Ключи:

    * e — заменяет протокол с rsh на ssh

    * progress — вывод хода процесса работы на терминал
    * l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься

    * z — использовать сжатие
    * u — update. Обновление, он будет пропускать файлы которые новей, чем на удалённом сервере

    * o — установить владельца конечного файла таким же, как и у исходного
    * g — установить группу конечного файла таким же, как и у исходного

    * t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
    * h — вывод информации на терминал в удобном для чтения (human-readable) виде

    * v — verbose. Вывод сообщений в терминал.
    * r — рекурсивный режим

    * n — отладочный режим
    * compress-level — уровень сжатия

    * delete-after — удалять файлы, которые не были найдены на удалённом сервере, “-after” означает, что удалить их нужно, только после окончания синхранизации. Так-же есть delete-before, delete-during, delete-excluded и просто delete

    отладочный режим
    Перед тем как запустить скрипт на рабочей машине, опробуйте всё в отладочном режиме, для этого используется ключь “-n”. В этом случае, rsync

    не будет менять или удалять файлы, но покажет, весь ход работы.

    исключение файлов
    RSync может как исключать, так и включать файлы, по заданному шаблону. Например —exclude *.run исключит все файлы с расширением run.
     
    Akme, Novi4ok и Veditos нравится это.
  6. Novi4ok

    Novi4ok Писатель

    Регистр.:
    31 янв 2008
    Сообщения:
    7
    Симпатии:
    0
    Всё красиво... Но есть одно большое НО. Если файл используется, то каковы вы будут ваши действия? Тоесть если надо синхронизировать два файловых хранилища, которые постоянно используться, и есть открытые файлы. Если файл как минимум не заблокируется, то при одновременно открытом файле у 2- пользователей в итоге получим тот, кто последний сохранит.

    Это не вариант. Продолжу свою мысль. При rsync по сети мы имеем фактически два хранилища. Блокировками файла управляет ОС на каждом своем хранилище. Тоесть что бы такая система работала необходимо что бы, когда открыт файл в 1 хранилище, во втором хранилище этот файл был заблокирован, и доступен только для чтения!
     
  7. symbolz

    symbolz Постоялец

    Регистр.:
    26 янв 2008
    Сообщения:
    75
    Симпатии:
    14
    все будет шоколадно )
    в данный момент rsync заберет файл как есть, при сл синхре забере уже новый. Даже если в этот файл постоянно что-то будет писаться. ему все равно. только что сам проверял, чтобы убедиться. Еще могу даже больше сказать, что есть решения которые используют rsync как бекап данных. Что в принцыпе похоже на синхронизацию. Есть еще один момент. К примеру в папке, Которую надо синхронизировать есть три файла, но после первой синхронизации кто-то удалил один файл и уже там два файла. В rsynct есть опция, котороя может при синхронизации удалять файлы и приводить оба каталога к одинаковому состоянию ПРоще всего прочитать ман и побаловаться с натсройками.
    т.е. при синхронизации всегда есть потеря информации, т.к. это не репликация данных.
     
  8. AccessForbidden

    AccessForbidden

    Регистр.:
    5 янв 2009
    Сообщения:
    324
    Симпатии:
    57
    Небольшой готовый скрипт для backup. Юзается rsync и cron.
    ssh работает на ключах - пароля не требуется.
     
    Akme нравится это.
  9. EugeneVC

    EugeneVC

    Регистр.:
    28 окт 2007
    Сообщения:
    297
    Симпатии:
    83
    Народ предложивший rsync - название темы читаем? :D С каких пор rsync стал работать по ftp. В инете я не разу ни видел. Вы предлагаете обертку над ssh.

    Есть только специальные программы для синхронизации по ftp - под Linux к сожалению не видел (.
     
  10. Veditos

    Veditos

    Регистр.:
    1 сен 2008
    Сообщения:
    155
    Симпатии:
    19
    Мне достаточно синхронизировать только в одну сторону.

    В принципе меня устроит и ssh, но если кто-нибудь подскажет решения для FTP буду благодарен. Я видел много софта для синхронизации по FTP который делает это через третью машину. Но хотелось бы что бы оно само, по расписанию синхронизировалось.
     
Статус темы:
Закрыта.