Начална » как да » Как да използвате rsync за архивиране на вашите данни в Linux

    Как да използвате rsync за архивиране на вашите данни в Linux

    rsync е протокол, изграден за Unix-подобни системи, който осигурява невероятна гъвкавост за архивиране и синхронизиране на данни. Тя може да се използва локално за архивиране на файлове в различни директории или може да бъде конфигурирана да синхронизира през Интернет с други хостове.

    Той може да се използва на Windows системи, но е достъпен само през различни портове (като Cygwin), така че в тази инструкция ще говорим за настройка на Linux. Първо, трябва да инсталираме / актуализираме rsync клиента. В дистрибуциите на Red Hat, командата е "yum install rsync", а в Debian е "sudo apt-get install rsync."


    Командата на Red Hat / CentOS, след като влезете като root (имайте предвид, че някои от последните дистрибуции на Red Hat поддържат метода sudo).


    Командата на Debian / Ubuntu.

    Използване на rsync за локални архиви

    В първата част на този урок ще архивираме файловете от Directory1 в Directory2. И двете директории са на един и същ твърд диск, но това ще работи точно така, ако директориите са съществували на два различни диска. Има няколко различни начина, по които можем да подходим към това, в зависимост от това какъв вид резервни копия искате да конфигурирате. За повечето цели е достатъчен следният ред код:

    $ rsync -av --delete / Directory1 / / Directory2 /

    Горният код ще синхронизира съдържанието на Directory1 към Directory2 и няма да остави разлика между двете. Ако rsync установи, че Directory2 има файл, който Directory1 няма, той ще го изтрие. Ако rsync намери файл, който е бил променен, създаден или изтрит в Directory1, той ще отразява същите тези промени в Directory2.

    Има много различни ключове, които можете да използвате за rsync, за да го персонализирате според вашите специфични нужди. Ето какво казва гореспоменатият код на rsync да прави с архивите:

    1. -a = рекурсивно (рекурсиране в директории), връзки (копиране на символни връзки), perms (запазване на разрешения), времена (запазване на времето за модификация), група (запазване на група), собственик (запазване на собственика), запазване на файловете на устройството и запазване на специални файлове.
    2. -v = подробен. Причината, поради която мисля, че многословното е важно, е, че можете да видите точно какво rsync е резервно копие. Помислете за това: Какво става, ако вашият твърд диск върви лошо и започва да изтрива файлове без ваше знание, след това стартирате скрипта rsync и той променя тези промени в архивите ви, като по този начин изтрива всички копия на файл, който не искате да получите отървете се от?
    3. -delete = Това казва на rsync да изтрие всички файлове, които са в Directory2, които не са в Directory1. Ако решите да използвате тази опция, препоръчвам ви също да използвате опциите с подробна информация по горепосочените причини.

    Използвайки скрипта по-горе, ето изход, генериран с помощта на rsync за архивиране на Directory1 в Directory2. Обърнете внимание, че без подробния ключ няма да получавате такава подробна информация.

    Снимката по-горе ни казва, че File1.txt и File2.jpg са били открити или като нови, или по друг начин променени от съществуващите в Directory2 копия, така че те бяха архивирани. Съвет Noob: Обърнете внимание, че последващите наклонени черти в края на директориите в моята команда rsync - тези, които са необходими, не забравяйте да ги запомните.

    Ще прегледаме още няколко удобни ключа към края на този урок, но не забравяйте, че за да видите пълния списък, можете да напишете „man rsync“ и да видите пълен списък с ключове, които да използвате.

    Това се отнася за местните архиви. Както можете да кажете, rsync е много лесен за използване. Тя става малко по-сложна, когато я използва за синхронизиране на данни с външен хост през интернет, но ние ще ви покажем прост, бърз и сигурен начин да направите това.

    Използване на rsync за външни архиви

    rsync може да бъде конфигуриран по няколко различни начина за външни резервни копия, но ще преминем през най-практичния (също най-лесният и най-сигурен) метод за тунелиране rsync чрез SSH. Повечето сървъри и дори много клиенти вече имат SSH и може да се използва за вашите rsync архиви. Ще ви покажем процеса, за да накарате една Linux машина да архивира в друга в локална мрежа. Процесът ще бъде същият, ако някой хост е бил в интернет някъде, просто имайте предвид, че порт 22 (или какъвто и да е порт, на който сте конфигурирали SSH), ще трябва да бъде препратен на всяко мрежово оборудване от страната на сървъра на нещата..

    На сървъра (компютъра, който ще получава резервните копия) се уверете, че SSH и rsync са инсталирани.

    # yum -y инсталирате 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 -elete -e ssh / Directory1 / [email protected]: / Directory2 /

    Ако имате SSH слушане на някой порт, различен от 22, ще трябва да посочите номера на порта, като например в този пример, където използвам порт 12345:

    $ rsync -av -delete -e 'ssh -p 12345' / Directory1 / [email protected]: / Directory2 /

    Както можете да видите от снимката на екрана по-горе, изходът, даден при архивирането в мрежата, е почти същият като при архивирането на място, единственото нещо, което се променя, е командата, която използвате. Обърнете внимание също така, че е поискана парола. Това е за удостоверяване с SSH. Можете да настроите RSA ключовете, за да пропуснете този процес, което също ще опрости автоматизирането на rsync.

    Автоматизиране на rsync архивиране

    Cron може да се използва в Linux за автоматизиране на изпълнението на команди, като rsync. Използвайки Cron, можем да накараме нашата Linux система да изпълнява нощни архиви, но колкото и често да искате те да работят.

    За да редактирате файла cron таблица за потребителя, в който сте влезли, изпълнете:

    $ crontab -е

    Трябва да сте запознати с vi, за да редактирате този файл. Напишете „I“ за вмъкване и след това започнете да редактирате файла cron таблица.

    Cron използва следния синтаксис: минута от час, час на деня, ден от месеца, месец от годината, ден от седмицата, команда.

    В началото може да е малко объркващо, затова нека ви дам един пример. Следната команда ще изпълни командата rsync всяка вечер в 10:00 часа:

    0 22 * ​​* * rsync -av - изтриване / Directory1 / / Directory2 /

    Първото “0” указва минутата на часа, а “22” определя 10 часа. Тъй като искаме тази команда да се изпълнява ежедневно, оставяме останалите полета със звездички и след това поставяме командата rsync.

    След като сте приключили с конфигурирането на Cron, натиснете бягство, след което въведете “: wq” (без кавичките) и натиснете enter. Това ще запази промените ви в vi.

    Cron може да получи много по-задълбочено от това, но за да се заемем с него, това би било извън обхвата на този урок. Повечето хора просто ще искат обикновено седмично или ежедневно архивиране и това, което ви показахме, може лесно да постигнете. За повече информация относно Cron, моля вижте man страниците.

    Други полезни функции

    Друго полезно нещо, което можете да направите, е да поставите архивите си в zip файл. Ще трябва да посочите къде искате да бъде поставен zip файла и след това rsync тази директория в резервната директория. Например:

    $ zip /ZippedFiles/archive.zip / Directory1 / && rsync -av - изтриване / ZippedFiles / / Directory2 /

    Горната команда взема файловете от Directory1, поставя ги в /ZippedFiles/archive.zip и след това rsyncs тази директория към Directory2. Първоначално може да мислите, че този метод ще се окаже неефективен за големи архиви, като се има предвид, че zip файла ще се променя всеки път, когато се прави най-малката промяна в даден файл. Въпреки това, rsync прехвърля само променените данни, така че ако вашият zip файл е 10 GB, а след това добавите текстов файл към Directory1, rsync ще знае, че е всичко, което сте добавили (въпреки че е в цип) и прехвърлят само няколко килобайта на променени данни.

    Има няколко различни начина да шифровате вашите rsync архиви. Най-лесният метод е да инсталирате криптиране на самия твърд диск (този, на който се архивират вашите файлове). Друг начин е да шифровате файловете си, преди да ги изпратите на отдалечен сървър (или друг твърд диск, каквото и да се окаже, че сте архивирали). Ще разгледаме тези методи в по-късни статии.

    Каквито и опции и функции да изберете, rsync се оказва едно от най-ефективните и гъвкави инструменти за архивиране до момента и дори прост скрипт на rsync може да ви спаси от загуба на данни.