Кое-что про rsync

Стандартный

rsync

В данной статье я поведаю об отличной утилите для синхронизации данных – Rsync. Это утилита, которая создана для синхронизации файлов и каталогов из одного места в другое, и совсем не важно где будут находится сохраняемые данные и место для сохранения, на одном жестком диске или на разных, либо на носителе другого компьютера в сети.

Синтаксис работы rsync:

rsync options source destination

где – source (данные, которые нужно сохранить),
destination (каталог для сохранения данных)

если простыми словами, то команда будет иметь вид:

rsync options что_сохранять куда_сохранять

Основным достоинством программы является:

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

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

3. Небольшая нагрузка: rsync сжимает и распаковывает данные блок за блоком на передающей и принимающей стороне. В итоге пропускная способность получается ниже по сравнению с другими протоколами передачи файлов.

Сразу покажу пример из собственной жизни. Я пользуюсь программой-напоминалкой Osmo. За все время использования у меня было два случая, когда по неизвестным мне причинам программа аварийно завершалась, а после повторного запуска я в ужасе обнаруживал полностью пустой список заданий и напоминаний. Поэтому я решил сохранять все содержимое каталога .osmo, в котором находились все конфигурационные файлы, в каталог Dropbox. В итоге получилась вот такая команда:

rsync -avz /home/dm/.osmo /home/dm/Dropbox/Linux/Recovery_Files

-a – режим архивирования, при котором сохраняются права доступа и информация о владельцах;
-v – детализация выполнения работы;
-r – рекурсивный режим, т.е. рекурсивно синхронизировать каталоги и все файлы и подкаталоги в нем.



После этого я создал скрипт rsync.sh с этой командой и добавил правило в cron для автоматического копирования/синхронизирования.

0 21,22 * * * /home/dm/My_Scripts/rsync.sh

Далее несколько примеров использования программы:

rsync -avz /home/dm/.osmo /home/dm/.shutter /home/dm/.psensor ~Recovery_Files

Скопируем каталоги .osmo, .shutter, .psensor и их содержимое в ~Recovery_Files

rsync -avz /home/dm/.osmo/ /home/dm/.shutter/ /home/dm/.psensor/ ~Recovery_Files

Скопируем только содержимое каталогов .osmo, .shutter и .psensor. Сами же каталоги не копируются. Для этого в конце каждого пути добавлен слеш (/).

rsync -rvz /home/user2/ user@192.168.0.101:/home/user/

Сохраним каталог user2 по ssh на удаленную машину 192.168.0.101 в /home/user/. Чтобы копировать данные на удаленную машину на ней должна быть установлена rsync.

sync -rvz user@192.168.0.101:/home/user/ /home/user2/

Теперь все наоборот, сохраняем данные с удалнного компьютера на свой. Если хотите сохранить весь процесс в лог-файл, тогда команда будет следующей:

sync -rvz user@192.168.0.101:/home/user/ /home/user2/ > /home/user2/backup.log

Если в основном каталоге будет удален файл или папка, а в каталоге-приемнике они все еще будут, то при желании такие файлы/папки можно удалять. Нужно применять параметр:

--delete

В таком случае команда будет иметь вид:

rsync -avz --delete /home/dm/.osmo /home/dm/Dropbox/Linux/Recovery_Files

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

-u, --update

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

-c, --checksum

Можно задать rsync максимальный размер передаваемого файла. В этом случае используется параметр:

--max-size

Например запретим передачу файлов более 10 Мб. Команда будет такой:

rsync -avz --max-size='10M' /home/dm/.osmo /home/dm/Dropbox/Linux/Recovery_Files

(K – килобайты, M – мегабайты, G – гигабайты)

Чтобы видеть сколько % осталось до завершения и скорость передачи нужно использовать параметр:

--progress

Если вам нужно исключить какой-нибудь каталог или файл, то будем использовать параметр:

--exclude

rsync -avz --exclude='notes/' /home/dm/.osmo /home/dm/Dropbox/Linux/Recovery_Files

В данном случае мы исключили из синхронизации каталог notes, который находится внутри .osmo. Пути файлов и каталогов исключения должны указываться относительно сохраняемого каталога.

Можно также составить список сохраняемых каталогов и файлов и сохранить его в текстовом файле. В списке каждый каталог или файл пишется с новой строки. Например:

file1
file2
file3

В этом случае нужно использовать параметр:

--files-from=FILE

Пример использования:

rsync -a --files-from=/home/dm/list_files.txt ~/ /home/dm/Dropbox/Linux/Recovery_Files

В данном случае список сохраняемых фалов и каталогов будет указан в файле list_files.txt. После файла со списком через пробел указываем каталог из которого будем копировать нужные данные. В нашем случае это Домашний каталог (~/)
Аналогичным образом можно указывать и файлы/каталоги для исключения, только в этом случае нужно использовать параметр:

--exclude-from=FILE

Более подробно о программе можно узнать выполнив команду:

man rsync

Ищете качественный хостинг? Посмотрите на https://masterhost.ru. Партнерами компании являются такие гранды как Microsoft, Symantec и другие. На выбор Windows, Unix и классические тарифы. Возможность регистрации доменного имени, почта, VPS хостинг, SSL-сертификаты и т.д.


Leave a Reply

Статьи