Той може да се използва на Windows системи, но е достъпен само чрез различни пристанища (като Cygwin), така че в това как ще се говори за настройването му на Linux. Първо, трябва да инсталираме / актуализираме rsync клиента. На дистрибуциите на Red Hat командата е "yum install rsync", а на Debian е "sudo apt-get install rsync".
Използване на rsync за локални архиви
В първата част на този урок ние ще архивираме файловете от Directory1 до Directory2. И двете директории са на един и същ твърд диск, но това би действало съвсем същите, ако директорите съществуват на две различни устройства. Има няколко различни начина, по които можем да се доближим до това, в зависимост от вида на архивите, които искате да конфигурирате. За повечето цели ще е достатъчен следният ред код:
$ rsync -av --delete /Directory1/ /Directory2/
Кодът по-горе ще синхронизира съдържанието на Directory1 с Directory2 и няма да остави никакви разлики между двете. Ако rsync установи, че Directory2 има файл, който Directory1 няма, той ще го изтрие. Ако rsync намери файл, който е променен, създаден или изтрит в Directory1, той ще отрази същите промени в Directory2.
Има много различни ключове, които можете да използвате за rsync, за да я персонализирате според вашите специфични нужди. Ето го споменатия по-горе код, който казва на rsync да прави резервни копия:
1. -а = рекурсивен (обръщане към директории), връзки (копиране на символни връзки като символни връзки), разрешения (запазени разрешения), времена (запазване на модификационните времена), група (запазена група), собственик запазете специални файлове. 2. -v = подробно. Причината, поради която мисля, че е по-подробна е важна, така че можете да видите точно какво създава резервно копие на rsync. Помислете за това: Какво ще стане, ако твърдият ви диск се разболее и започне да изтрива файлове без ваше знание, а след това изпълнявате скрипта rsync и той притиска тези промени към архивите ви, като по този начин изтривате всички копия на файл, който не искате да получите отървете се от? 3. -delete = Това казва на rsync да изтрие всички файлове, които са в Directory2, които не са в Directory1. Ако решите да използвате тази опция, препоръчваме да използвате и подробните опции, поради причините, посочени по-горе.
С помощта на скрипта по-горе, тук е изходът, генериран чрез използване на rsync за архивиране на Directory1 до Directory2. Имайте предвид, че без детайлния превключвател няма да получите такава подробна информация.
Ще преминем още няколко удобни превключвателя към края на този урок, но просто помнете, че за да видите пълния списък, можете да въведете "man rsync" и да видите пълен списък с комутатори, които да използвате.
Това се отнася и за локалните архиви. Както можете да кажете, rsync е много лесен за използване. Тя става малко по-сложна, когато се използва за синхронизиране на данни с външен хост през интернет, но ние ще ви покажем един прост, бърз и сигурен начин да направите това.
Използване на rsync за външни архиви
rsync може да бъде конфигуриран по няколко различни начина за външни архиви, но ще разгледаме най-практичния метод (най-лесният и най-сигурен) за tunneling rsync през SSH. Повечето сървъри и дори много клиенти вече имат SSH и могат да се използват за вашите rsync архиви. Ще ви покажем процеса, за да получите една Linux машина за архивиране на друга в локална мрежа. Процесът би бил съвсем същият, ако някъде имаше един хост, просто отбележете, че порт 22 (или който и да е порт, на който сте конфигурирали SSH) трябва да бъде препратен на всяко мрежово оборудване от страна на сървъра.
На сървъра (компютъра, който ще получава резервните копия), уверете се, че SSH и rsync са инсталирани.
# yum -y install ssh rsync
# sudo apt-get install ssh rsync
Освен инсталирането на SSH и rsync на сървъра, всичко, което наистина трябва да направите, е да настроите хранилищата на сървъра, където искате файловете да се архивират, и се уверете, че SSH е заключен. Уверете се, че потребителят, който възнамерявате да използвате, има сложна парола и може би е добра идея да превключите порта, който SSH слуша (по подразбиране е 22).
Ще изпълним същата команда, която използвахме за използването на rsync на локален компютър, но включваме необходимите допълнения за тунелиране на rsync през SSH към сървър в локалната ми мрежа. За потребител "geek", който се свързва с "192.168.235.137" и използвайки същите ключове, както по-горе (-av -delete), ще стартираме следното:
$ rsync -av –delete -e ssh /Directory1/ [email protected]:/Directory2/
Ако имате SSH слушане на някой порт, различен от 22, ще трябва да посочите номера на порта, например в този пример, където използвам порт 12345:
$ rsync -av –delete -e 'ssh -p 12345' /Directory1/ [email protected]:/Directory2/
Автоматизиране на резервните копия на rsync
Cron може да се използва в Linux за автоматизиране на изпълнението на команди, като rsync. Използвайки Cron, можем да имаме нашата система за Linux да работи в режим на нощно архивиране, или колкото и често да искате да работят.
За да редактирате файла cron table за потребителя, в който сте влезли като, изпълнете:
$ crontab -e
Трябва да сте запознати с vi, за да редактирате този файл. Напишете "I" за вмъкване и след това започнете да редактирате файла cron table.
Cron използва следния синтаксис: минута на час, час на деня, ден от месеца, месец на годината, ден от седмицата, команда.
В началото може да е малко объркващо, така че нека да ви дам пример. Следната команда ще стартира командата rsync всяка вечер в 22 часа:
0 22 * * * rsync -av --delete /Directory1/ /Directory2/
Първият "0" посочва минутата на часа, а "22" определя 10 часа. Тъй като искаме тази команда да се изпълнява ежедневно, ще оставим останалите полета със звездички и след това ще поставим командата rsync.
След като приключите с конфигурирането на Cron, натиснете escape и след това напишете ": wq" (без кавичките) и натиснете enter. Това ще запази промените ви в vi.
Cron може да получи много по-задълбочено от това, но да продължим за това ще бъде извън обхвата на този урок. Повечето хора просто искат просто седмично или дневно резервно копие и това, което сме ви показали, можете лесно да постигнете това. За повече информация относно Cron вижте страниците на човека.
Други полезни функции
Друго полезно нещо, което можете да направите, е да поставите архивите в zip файл. Ще трябва да посочите къде бихте искали да поставите zip файла, след което rsync тази директория в архива ви. Например:
$ zip /ZippedFiles/archive.zip /Directory1/ && rsync -av --delete /ZippedFiles/ /Directory2/
Командата по-горе отнема файловете от Directory1, поставя ги в / ZippedFiles/archive.zip и след това rsyncs тази директория в Directory2. Първоначално може да смятате, че този метод ще се окаже неефективен за големи резервни копия, като се има предвид, че пощенският файл ще се променя всеки път, когато се извърши най-малката промяна в даден файл. Въпреки това, rsync прехвърля променените данни само, така че ако вашият zip файл е 10 GB и след това добавите текстов файл към Directory1, rsync ще разбере, че всичко, което сте добавили (въпреки че е с цип), и прехвърля само няколко килобайта на променените данни.
Има няколко различни начина, по които можете да шифровате вашите rsync архиви. Най-лесният начин е да инсталирате криптиране на самия твърд диск (този, с който се архивират вашите файлове). Друг начин е да шифровате файловете си, преди да ги изпратите на отдалечен сървър (или на друг твърд диск, каквото и да се случва, за да се създаде резервно копие). Ще покрием тези методи в по-късни статии.
Каквито и опции и функции да изберете, rsync се оказва един от най-ефикасните и универсални инструменти за архивиране досега, а дори и обикновен rsync скрипт може да ви спести загуба на данни.