Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы

Rsync

Rsync - утилита для Unix-систем, которая используется для синхронизации файлов и папок из одного месторасположения в другое. Rsync была создана как замена для rcp и scp.

Преимущества rsync:

  • Скорость: Первоначально rsync реплицирует все содержимое между источником и местом назначения. Далее rsync передает только изменившиеся блоки или биты в место назначения.

  • Безопасность: rsync включает в себя шифрование данных при передаче с использованием протокола SSH

  • Маленькая нагрузка: rsync использует сжатие и распаковку данных блок за блоком на передающей и принимающей стороне соответственно. Таким образом используемая rsync пропускная способность ниже по сравнению с другими протоколами передачи файлов.

Синтаксис:

# rsync options source destination

Где source — источник, destination - место назначения, могут быть как локальными, так и удаленными. В случае использования с удаленными объектами указывается логин, имя сервера и путь.

1. Синхронизация двух директорий на одном сервере

Для синхронизации двух директорий на одной машине используем ключи -zvr:

z - включаем сжатие

v - детализация

r - режим рекурсии.

# rsync -zvr /home/user/server_test/ /home/user/test
sending incremental file list
created directory /home/user/test
./
client.pl
test.pl

sent 565 bytes received 100 bytes 1,330.00 bytes/sec
total size is 520 speedup is 0.78

Сравнив копии увидим, что rsync изменил метки времени и группу владельца во время синхронизации

2. Сохранение временных меток в процессе синхронизации

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

3. Синхронизация файлов с локальной машины на удаленную

# rsync -rvz /home/user/test/ backup@192.168.30.30:/home/admin/test2/

Здесь необходимо указать имя пользователя, ip-aдрес сервера и путь.
В данном примере мы указали ключ -r вместо -a, т.к. у пользователя user нет прав на создание файлов от имени рута (а синхронизируем мы именно такие файлы).

4. Синхронизация с удаленной машиной имеющий нестандартный порт ssh
Для этого понадобиться ключ -е с указание номера порта, например -e='ssh -p 4439'

# rsync -e='ssh -p 4439' -rvz /home/user/test/ backup@192.168.30.30:/home/admin/test2/

5. Не перезаписывать измененные данные в месте назначения (destination)
Для этого используем опцию -u. В примере файл "readme" изменен на удаленной стороне:

# rsync -avzu backup@192.168.30.30:/home/admin/test2 /home/user/test

6. Синхронизация только дерева каталогов (без файлов)
Используем опцию - d для синхронизации дерева каталогов, без синхронизации файлов находящихся внутри каталогов (файлы с корневой директории все равно синхронизируются)

7. Вывод процесса синхронизации на экран или файл
Очень полезно знать прогресс выполнения, то есть сколько файлов скопировалось или в каком месте процесс сейчас находится
Для этого импользуется опция --progress

8. Удаление файлов в точке назначения.
Если файл не присутствует на источнике, но присутствует на конечной машине (куда мы копируем), можно удалять такие файлы в процессе синхронизации.
Для этого используется опция —delete

# rsync -avz --delete backup@192.168.30.30:/home/admin/test2/ /home/user/test

9. Не создавать новые файлы на конечном сервере
Если хотим обновлять (синхронизировать) только сущестующие файлы, не копируя вновь созданные, то для этого понадобится опция --existing
Для примера, создаем на источнике файл newfile.txt и производим синхронизацию:

# rsync -avz --existing backup@192.168.30.30:/home/admin/test2/ /home/user/test

10. Просмотр разницы между источником и приемником
Для этого используется опция -i

# rsync -avzi backup@192.168.30.30:/home/admin/test2/ /home/user/test

> - показывает что файл был передан (синхронизирован).
f - показывает что это файл.
d - директория
s - показывает изменение размера.
t - показывает изменение штампа времени.
o - изменение владельца
g - изменение группы.

11. Включение/исключение файлов/директорий с использованием шаблонов
Rsync позволяет задавать шаблоны для отбора нужных файлов и директорий.
Скопируем все файлы начинающиеся с буквы "n"

# rsync -avz --include 'n*' --exclude '*' backup@192.168.30.30:/home/admin/test2/ /home/user/test

--include - это то, что мы включаем в синхронизацию
--exclude - это то, что мы исключаем

12. Коды ошибок
0 - Успешно
1 - Синтаксическая ошибка или ошибка использования
2 - Несовместимость протоколов
3 - Ошибки выбора входных/выходных файлов и каталогов
4 - Запрошенное действие не поддерживается: была сделана попытка работы с 64-битными файлами на платформе, которая их не поддерживает; или указан параметр, который поддерживается только клиентом и не поддерживается сервером.
5 - Ошибка при попытке начать работать по протоколу клиент-сервер
10 - Ошибка сокета ввода/вывода
11 - Ошибка ввода/вывода файла
12 - Ошибка в потоке данных rsync-протокола
13 - Ошибки при диагностике
14 - Ошибка в IPC-коде
20 - Получены сигналы или SIGUSR1, или SIGINT
21 - Вызов waitpid() возвращает ошибку
22 - Error allocating core memory buffers
23 - Незавершенная передача из-за ошибки
24 - Незавершенная передача из-за пропадания исходного файла
30 - Время ожидания при передаче/приеме данных

Материал взят с сайта: http://unix-way.ru/index.php/shpargalka-po-komandam-nix/utilita-rsync

Rsync — синхронизация директорий в Linux
Главная > Программы