Купи доменное имя для своего блога, персональной web-странички или нового интернет проекта по выгодным ценам. Зарегистрировать домен в зоне .RU за 195 руб.

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.

Регистрация доменов RU за 195р!!!
Совместно с регистратором onreg.ru мы проводим акцию! Купи домен для своего блога или нового интернет проекта по выгодным ценам. Так домен в зоне RU стоит всего 195 рублей. При покупке нескольких доменов, возможны скидки. На onreg.ru есть система тикетов, через которую мы всегда готовы ответить на все ваши вопросы и предложения.


Красивые спортивные товары детям. Купить спортивные товары.
Комментарии
  • Shinkei aka HepB — 14.02.2008 #1
    Очень неплохо было бы раскрыть как работает rsync в режиме сервера, описать пример конфигурационного файла и дать рекомендации по запуску rsync клиентов на стороне.
  • bb — 14.08.2008 #2

    очень мало инфорации

  • anonymous — 16.08.2008 #3

    а мне понравилось

  • iltmpz — 19.09.2008 #4

    Спасибо за статью - прямо выручило. Узнал, что для rsync оказывается не нужен сервер - просто все копируется 1 командой, да еще и по ssh.
    ИМХО самый удобный способ копирования - особенно если ssh для рута открыт.

    Могу добавить, что если строка "-lzuogthvr» плохо запоминается, можно использовать "-a» - это аналогично "-rlptgoD» (D - скопировать еще и устройства)
    Остальные параметры скорее «декоративные» - на процесс копирования не влияют.
    И еще бывает полезно:
    -x - не выходить за пределы ФС (например при копировании /)
    например, при переносе системного диска на новый сервер в /mnt я делал:
    rsync -e ssh —progress -ax айпи_откуда_копируем:/ айпи_куда_копируем;/mnt

    Ну и, конечно, полезно почитать man rsync

  • blacknot — 21.09.2008 #5

    О, iltmpz, спасибо за дополнение, очень полезно

  • iltmpz — 29.09.2008 #6

    еще дополнение (сколько ж проблем просто один к одному диск скопировать). Вчера понадобилось /var на freebsd скопировать - вот пришлось еще использовать:
    -S - корректно обрабатывать разреженные (sparse) файлы.

    И кстати, необязательно копировать с 1 компа на другой, можно и на одном все:
    rsync -auxS —progress /var /mnt/var

  • Дмитрий — 26.05.2009 #7

    Благодарю…

  • Ivan1986 — 31.07.2009 #8

    Еще есть очень полезная опция

    —partial

    поддержка докачки

  • ' — 10.09.2009 #9

  • Дмитрий — 30.10.2009 #10

    Добавлю, что если ssh слушается не на стандартном порту то -e «ssh -p443»

  • Andrey Y. Ostanovsky — 20.01.2010 #11

    Разрешение захода по ssh руту - это вопиющее нарушение правил безопасности!

    Для синхронизации файлов нет никакой необходимости работать рутом удаленно:

    # rsync -e ‘ssh -l user -i /home/user/.ssh/id_dsa’ -av 192.168.0.1:/etc/namedb/ .

  • vados — 28.01.2010 #12

    Не понятно тут вообще ничего… а зачем вообще rsync, когда есть ssh?

    БРЕД!

  • mike — 03.02.2010 #13

    ssh будет перезаливать все файлы поверх старых, rsync же не будет качать не измененные файлы и папки. Если делаются ежедневные/ежечасные сливы с одного сервака на несколько, то очень помогает..

  • GeoMaster — 14.03.2010 #14

    Существует ограничение на копирование файлов с длинными именами, а именно - 255 символов. Возможно, это ограничение Linux VFS. Существует на XFS, ext2/3. Сейчас тестирую на ReiserFS v3.6

    Очень неудобное ограничение при использовании rsync для резервирования домашних каталогов пользователей, они (пользователи) любят сохранять html-странички с ПОЛНЫМ именем, включающим и имя сайта и полный title… Ищу решение для обхода. Может, подскажет кто?

Оставить комментарий
Ваше имя:
E-mail:
Сайт (блог):
Сообщение:
Если вы не робот, введите код: