В данной статье я поведаю об отличной утилите для синхронизации данных — 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-сертификаты и т.д.