Rsync: утилита для быстрого удаленного или локального копирования файлов

Четверг, 5 января 2012 г.
Рубрика: *NIX_*BSD сиcтемы -> В помощь сисадмину
Метки: | | | | | |
Просмотров: 40995
Подписаться на комментарии по RSS

Rsync разработан для замены rcp – древней программы для удаленного копирования под Unix. Благодаря широким возможностям синхронизации и передачи файлов, rsync часто применяется для создания зеркал.

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

Кроме вышеописанных вкусностей, rsync обладает также и несколькими полезными возможностями обеспечения безопасности. Он поддерживает ssh – рекомендованный протокол для безопасной передачи данных; перед обработкой информации производит ее запись во временный файл, чтобы ничего не случилось с оригиналом, наконец, он поддерживает специальный режим безопасной отладки команд.

Rsync прост в использовании, но не является программой «click-and-play». Это —мощный инструмент, который может быть очень полезным, но не стоит забывать об осторожности, так как его с помощью легко что-нибудь испортить.

Синтаксис утилиты

Синтаксис утилиты простой и довольно обыденный.

rsync [опции] источник [приемник]

Указав только источник, мы увидим список файлов без операции копирования.

Опции и примеры

Для простоты понимания, операции синхронизации привожу сперва локально.

Быстрый способ синхронизировать два каталога, это использовать опцию -a:

rsync -a foobar_src/ foobar_dst/

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

Опция -a задает архивный режим работы утилиты, и является эквивалентом набора опций:

-r, --recursive — рекурсивный режим;

-l, --links — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься;

-p, --permsперенос прав;

-t, --times — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации;

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

-o, --owner — установить владельца конечного файла таким же, как и у исходного;

-D, - same as --devices --specials — установить тип файла устройства и файла специального типа таким же, как у исходного.

В итоге получаем копию директории источника. Кстати, это можно использовать при переносе ОС на другой винчестер, подправив /etc/fstab, установив/переустановив grub на новом винте — получаем рабочую систему, но это уже другая тема.

Для вывода информации о работе утилиты, существует опция -v, --verbose. Чем больше опций -v, тем боле информативным будет вывод утилиты. Максимальная информативность достигается при четырех опциях -v, --verbose.

Если у нас содержится в директории источника актуальная информация, то чтобы не засорять приемник информацией, которая в процессе работы была удалена или перемещена в источнике, нужно старые файлы и директории удалить. Для этого есть несколько опций удаления, каждая из которых предоставляет свой алгоритм удаления. Их аж шесть!

--del — сокращенная форма --delete-during --delete — просто удалить посторонние файлы из приемника;

--delete-before — приемник удаляет перед передачей;

--delete-during — приемник удаляет в процессе передачи, но не перед;

--delete-delay — отложенное удаление/найти файлы для удаления в процессе передачи, но удалить после передачи;

--delete-after — приемник удаляет после передачи, но не перед ней;

--delete-excluded — так же удалить исключенные файлы в приемнике, для этого задается шаблон (--exclude=PATTERN ).

Допустим у нас на приемнике есть более свежие файлы, и мы не хотим что бы они были перезаписаны старыми из источника, то для этого применяется ключ -u, --update.

-u, --update — пропустить файлы, если на приемнике файл новее.

Не стоит пугаться если изменились даты директорий, т.к. сами файлы небыли перезаписаны.

Порой файлы могут повредится или быть модифицырованы, но совпадать и датой и размером. То можно использовать проверку контрольной суммы, опция -c, --checksum.

Моей задачей было разобраться, как сделать резервную копию коллекций фотографий, музыки, наработок по университету и работе. При этом в источнике информация всегда актуальная, а то что удалено — мусор. Пример для решения моей задачи:

rsync -auvv --delete-during foobar_src/ foobar_dst/

Это обновит мой приемник, если он был уже чем то заполнен — вычистит то, чего нет в источнике, но не затронет файлы которые поновее, выведет статистику и состояние по каждому файлу.

Удаленная работа

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

Необходимы следующие опции:

-e — задать удаленный шелл для использования;

-z — сжимать передаваемые данные, либо задать:

-compress-level=9 — сжатие с установкой уровня компрессии.

Пример копирования с удаленного хоста по протоколу ssh:

rsync -avv --delete-during -compress-level=9 -e "ssh -p remote_ssh_port" user@host:/dir/to/foobar_src foobar_dst/

При этом, на стороне источника нужно иметь установленную утилиту rsync.

Больше информации про утилиту rsync вы сможете найти в ее же документации.

Взято с Habrahabr.ru

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru pikabu.ru blogger.com liveinternet.ru google.com

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

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

(обязательно)