Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.



Синхронизируем директории с помощью Rsync

Метки: | |
Понедельник, 10 ноября 2008 г.
Просмотров: 18181
Подписаться на комментарии по RSS


Сегодня я познакомлю вас с базовым применением rsync

отличной, старой и надежной утилитой для инкрементального перемещения данных и синхронизации локальных директорий или данных на различных Unix системах.

rsync имеет огромное количество возможностей и команд, и в одной статье невозможно уместить все. Поэтому, как я и говорил, данный пост познакомит вас только с базовыми возможностями.

Что такое rsync?

rsync (сокращение от remote synchronization) это бесплатная утилита для передачи данных между Unix systems.

Если говорить просто, то это команда Unix, которую вы можете запустить локально для синхронизации двух директорий. Реальная мощь rsync проявляется, когда необходимо синхронизировать директории между удаленными системами. rsync использует протокол

ssh для передачи данных между системами, но более ранние версии использовали rsh.

rsync либо предуставлен на большинстве современных Unix-подобных дистритивах, либо может быть легко установлен из репозитариев.

Что делает rsync?

rsync синхронизирует директории - делает одну директорию похожей на другую, включая структуру папок и файлов. rsync во время работы получает список файлов в директории источнике, сравнивает его с нужными критериями (размер файлов, время создания или модификации или контрольная сумма) и затем файлы, которые подошли по критериям копирует в директорию назначения.

Базовое использование rsync

Для того чтобы показать вам как работает rsync я сделаю 2 директории с файлами в них. /tmp/dir1 в моем примере это директория-источник, тогда как /tmp/dir2 будет директорией назначения - в результате опыта она будет соответствовать директории /tmp/dir1.

Создадим директории и файлы:

ubuntu$ <strong>mkdir /tmp/dir1 /tmp/dir2</strong>
ubuntu$ <strong>cd /tmp</strong>
ubuntu$ <strong>echo "original file 1" > dir1/file1</strong>
ubuntu$ <strong>echo "original file 2" > dir1/file2</strong>
ubuntu$ <strong>echo "original file 3" > dir1/file3</strong>
ubuntu$ <strong>cp dir1/file1 dir2</strong>

В данный момент наши директории выглядят так:

ubuntu$ <strong>find ./dir*</strong>
./dir1
./dir1/file2
./dir1/file3
./dir1/file1
./dir2
./dir2/file1

Теперь запустим в первый раз rsync.

Последние 2 параметра в команде обозначают директорию источник и назначение.

В примере ниже мы использует следующие опции:

-avz - a для режима архивации (сохраняет все атрибуты файлов и директорий - владельца , права и прочее), v для отображения списка файлов обработанных rsync и  z для компрессии данных для увеличения скорость.

–stats - данная опция после завершения синхронизации выводит суммарную статистику.

ubuntu$ <strong>rsync -avz --stats  /tmp/dir1/ /tmp/dir2</strong>
building file list ... done
file2
file3
Number of files: 4
Number of files transferred: 2
Total file size: 48 bytes
Total transferred file size: 32 bytes
Literal data: 32 bytes
Matched data: 0 bytes
File list size: 87
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 221
Total bytes received: 64
sent 221 bytes  received 64 bytes  570.00 bytes/sec
total size is 48  speedup is 0.17

Как вы можете заметить, хотя в директории /tmp/dir1 было 3 файла, только 2 из них было передано в директорию /tmp/dir2.

На сегодня это все, в следующих постах я покажу вам более продвинутое использование rsync. Для особо любознательных предлогаю  почитать  man rsync или rsync –help

Постовой

Один из крупнейших интернет-магазинов в России по технике для активного отдыха. В продаже квадроцикл, гидроциклы, мотовездеходы, снегоходы.

У нас вы можете заказать лимузин напрокат. В Санкт-Петербурге лучших цен, чем у нас вы не найдете.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Комментариев: 1

  1. Аноним | 2010-06-10 в 23:04:28

    Спасибо за статью.

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

    rsync --files-from=/path/to/list.txt /home/username/backup

    где list.txt содержит

    /path/to/file1

    /path/to/file2

    /path/to/dir1

    как здесь в примере http://lists.samba.org/archive/rsync/2006-January/014426.html

    Но почему-то вылетает ошибка

    rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]

    Поиск ничего не дал, может Вы подскажете в чем здесь я ошибся?

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

Используйте нормальные имена.

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

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

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