Итак, для чего нужен 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. Если на конце исходной директории стоит «/», то это означает копирование содержимого директории; отсутствие слеша означает копирование директории и ее содержимого.
Ключи:
отладочный режим
Перед тем как запустить скрипт на рабочей машине, опробуйте всё в отладочном режиме, для этого используется ключь “-n”. В этом случае, rsyncне будет менять или удалять файлы, но покажет, весь ход работы.
исключение файлов
RSync может как исключать, так и включать файлы, по заданному шаблону. Например exclude *.run исключит все файлы с расширением run.
Регистрация доменов RU за 195р!!!очень мало инфорации
а мне понравилось
Спасибо за статью - прямо выручило. Узнал, что для rsync оказывается не нужен сервер - просто все копируется 1 командой, да еще и по ssh.
ИМХО самый удобный способ копирования - особенно если ssh для рута открыт.
Могу добавить, что если строка "-lzuogthvr» плохо запоминается, можно использовать "-a» - это аналогично "-rlptgoD» (D - скопировать еще и устройства)
Остальные параметры скорее «декоративные» - на процесс копирования не влияют.
И еще бывает полезно:
-x - не выходить за пределы ФС (например при копировании /)
например, при переносе системного диска на новый сервер в /mnt я делал:
rsync -e ssh —progress -ax айпи_откуда_копируем:/ айпи_куда_копируем;/mnt
Ну и, конечно, полезно почитать man rsync
О, iltmpz, спасибо за дополнение, очень полезно
еще дополнение (сколько ж проблем просто один к одному диск скопировать). Вчера понадобилось /var на freebsd скопировать - вот пришлось еще использовать:
-S - корректно обрабатывать разреженные (sparse) файлы.
И кстати, необязательно копировать с 1 компа на другой, можно и на одном все:
rsync -auxS —progress /var /mnt/var
Благодарю…
Еще есть очень полезная опция
—partial
поддержка докачки
’
Добавлю, что если ssh слушается не на стандартном порту то -e «ssh -p443»
Разрешение захода по ssh руту - это вопиющее нарушение правил безопасности!
Для синхронизации файлов нет никакой необходимости работать рутом удаленно:
# rsync -e ‘ssh -l user -i /home/user/.ssh/id_dsa’ -av 192.168.0.1:/etc/namedb/ .
Не понятно тут вообще ничего… а зачем вообще rsync, когда есть ssh?
БРЕД!
ssh будет перезаливать все файлы поверх старых, rsync же не будет качать не измененные файлы и папки. Если делаются ежедневные/ежечасные сливы с одного сервака на несколько, то очень помогает..
Существует ограничение на копирование файлов с длинными именами, а именно - 255 символов. Возможно, это ограничение Linux VFS. Существует на XFS, ext2/3. Сейчас тестирую на ReiserFS v3.6
Очень неудобное ограничение при использовании rsync для резервирования домашних каталогов пользователей, они (пользователи) любят сохранять html-странички с ПОЛНЫМ именем, включающим и имя сайта и полный title… Ищу решение для обхода. Может, подскажет кто?