Вы здесь

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

tags: 

Что такое 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.

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

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

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

find ./dir*
./dir1
./dir1/file2
./dir1/file3
./dir1/file1
./dir2
./dir2/file1

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

Последние 2 параметра в команде обозначают директорию источник и назначение. В примере ниже мы использует следующие опции:
-avz — a для режима архивации (сохраняет все атрибуты файлов и директорий-владельца, права и прочее), v для отображения списка файлов обработанных rsync и z для компрессии данных для увеличения скорость.
–stats — данная опция после завершения синхронизации выводит суммарную статистику.

rsync -avz --stats  /tmp/dir1/ /tmp/dir2
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
Оригинал: http://guruadmin.ru/page/sinhroniziruem-direktorii-s-pomoshhju-rsync.