Rsnapshot и Borgbаckup: две программы инкрементального резервного копирования

Особенностью является ориентация на создания полных снапшотов файловой системы через заданный интервал времени, для экономии места на диске, не изменившиеся с момента первого бэкапа файлы ссылаются на оригинальный файл с помощью жестких ссылок. Фото: Pexels.com (CC0).
Особенностью является ориентация на создания полных снапшотов файловой системы через заданный интервал времени, для экономии места на диске, не изменившиеся с момента первого бэкапа файлы ссылаются на оригинальный файл с помощью жестких ссылок. Фото: Pexels.com (CC0).

Дан­ная ста­тья рас­счи­та­на на тех­ни­че­ских спе­ци­а­ли­стов. В ста­тье будет рас­ска­за­но о двух ути­ли­тах для орга­ни­за­ции инкре­мен­таль­но­го резерв­но­го копи­ро­ва­ния Rsnapshot и Borgbackup.

Rsnapshot – бази­ру­ю­ща­я­ся на rsync ути­ли­та на Perl для созда­ния резерв­ных копий. Осо­бен­но­стью явля­ет­ся ори­ен­та­ция на созда­ние пол­ных снап­шо­тов фай­ло­вой систе­мы через задан­ный интер­вал вре­ме­ни, для эко­но­мии места на дис­ке, не изме­нив­ши­е­ся с момен­та пер­во­го бэка­па фай­лы ссы­ла­ют­ся на ори­ги­наль­ный файл с помо­щью жест­ких ссы­лок.

Borgbackup (крат­ко: Borg) это дедуп­ли­ци­ру­ю­щая про­грам­ма для резерв­но­го копи­ро­ва­ния. Опци­о­наль­но доступ­ны сжа­тие и шиф­ро­ва­ние дан­ных. Бла­го­да­ря деду­пли­ка­ции резерв­ное копи­ро­ва­ние про­ис­хо­дит очень быст­ро.

Важ­ное пре­иму­ще­ство Rsnapshot на Borgbackup в том, что он потреб­ля­ет мало ресур­сов (как CPU так и RAM) и фак­ти­че­ски бази­ру­ет­ся на инстру­мен­тах опе­ра­ци­он­ной систе­мы: ути­ли­та rsync, коман­да копи­ро­ва­ния жест­ких ссы­лок. Это поз­во­ля­ет исполь­зо­вать Rsnapshot даже на огра­ни­чен­ных в ресур­сах встро­ен­ных систе­мах. Напри­мер, на марш­ру­ти­за­то­рах.

Borgbackup, несмот­ря на то, что тре­бу­ет срав­ни­тель­но боль­ше ресур­сов, суще­ствен­но быст­рее, неже­ли Rsnapshot, про­из­во­дит инкре­мен­таль­ное копи­ро­ва­ние и более эффек­тив­но рас­хо­ду­ет место бла­го­да­ря воз­мож­но­сти сжа­тия.

Так­же Borg поз­во­ля­ет шиф­ро­вать дан­ные сто­роне кли­ен­та, что поз­во­ля­ет хра­нить архи­вы даже на облач­ных хра­ни­ли­щах без опа­се­ния утеч­ки инфор­ма­ции. Rsnapshot, напро­тив, не может хра­нить архи­вы на уда­лен­ной фай­ло­вой систе­ме в силу кон­струк­тив­ных огра­ни­че­ний.

Еще одно отли­чие в том, что с помо­щью Rsnapshot мож­но копи­ро­вать фай­лы с уда­лен­ных сер­ве­ров на сер­вер, где уста­нов­лен Rsnapshot.

Крайне жела­тель­но, что­бы при этом на уда­лен­ном сер­ве­ре была уста­нов­ле­на ути­ли­та rsync, это поз­во­лит суще­ствен­но уско­рить инкре­мен­таль­ное копи­ро­ва­ние, так как будут ско­пи­ро­ва­ны толь­ко изме­нен­ные фай­лы. С Borg это будет суще­ствен­но мед­лен­нее, так как пока это мож­но сде­лать толь­ко при­мон­ти­ро­вав уда­лен­ную фай­ло­вую систе­му.

Как Rsnapshot, так и Borg мож­но исполь­зо­вать для локаль­но­го резерв­но­го копи­ро­ва­ния, доба­вив в cron.

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

Таблица сравнения Rsnapshot и Borgbackup

Установка Rsnapshot на встроенную ОС.

Уста­нов­ка Rsnapshot на боль­шин­ство совре­мен­ных BSD и GNU/Linux дис­три­бу­ти­вах три­ви­аль­на, так как бинар­ные паке­ты Rsnapshot есть для всех рас­про­стра­нен­ных дис­три­бу­ти­вов.

Одна­ко уста­нов­ка Rsnapshot на встро­ен­ные систе­мы (напри­мер на марш­ру­ти­за­тор) может быть инте­рес­на, так как не столь широ­ко исполь­зу­ет­ся.

Ниже при­ве­де­на инструк­ция по уста­нов­ке Rsnapshot на марш­ру­ти­за­тор под управ­ле­ни­ем сво­бод­но рас­про­стра­ня­е­мой опе­ра­ци­он­ной систе­мы OpenWrt (https://openwrt.org).

Важно

Помни­те, что в состав резерв­но­го копи­ро­ва­ния обыч­но вхо­дят базы дан­ных, в кото­рых содер­жат­ся все паро­ли поль­зо­ва­те­лей и иная инфор­ма­ция! Так­же систе­ма с Rsnapshot будет иметь доступ к сер­ве­рам для ска­чи­ва­ния фай­лов.

Поэто­му очень важ­но обес­пе­чить долж­ную защи­ту и регу­ляр­ное обнов­ле­нию ПО на систе­ме, на кото­рой будет уста­нов­лен Rsnapshot!

Неко­то­рые реко­мен­да­ции для это­го

  • Уста­но­ви­те под­держ­ку HTTPS про­то­ко­ла для досту­па в админ­па­нель марш­ру­ти­за­то­ра $ opkg install luci-ssl
    Раз­ре­ши­те доступ толь­ко из локаль­ной сети или кон­крет­ным IP адре­сам.
  • Вход po ssh про­то­ко­лу по клю­чу и паро­лю, а не толь­ко по паро­лю.
  • Так­же реко­мен­ду­ет­ся исполь­зо­вать мене­джер паро­лей для гене­ра­ции и хра­не­ния паро­лей досту­па.

К сожа­ле­нию, пакет rsnapshot в про­ект­ном репо­зи­то­рии OpenWrt уста­рел, и вме­сто него удоб­но вос­поль­зо­вать­ся сто­рон­ним репо­зи­то­ри­ем Entware.

  • Создай­те пап­ку для уста­нов­ки Entware $ mkdir /opt
    Перей­ди­те в создан­ную пап­ку $ cd /opt
  • Ска­чай­те и запу­сти­те скрипт уста­нов­ки для нуж­ной вам архи­тек­ту­ры (в моем слу­чае MIPS – архи­тек­ту­ра мое­го роу­те­ра).
  • $ wget – O – http://bin.entware.net/mipssf-k3.4/installer/generic.sh | sh Запу­сти­те скрипт уста­нов­ки паке­та rsnapshot:
  • $ /opt/bin/opkg install rsnapshot

Если уста­нов­ка про­шла успеш­но, то дол­жен быть создан файл с кон­фи­гу­ра­ци­ей:

/opt/etc/rsnapshot.conf

Вам необ­хо­ди­мо его настро­ить под свои нуж­ды.

Уста­но­вить:

  • snapshot_root – кор­не­вую пап­ку для раз­ме­ще­ния резерв­ных копий.

Далее настрой­те то, что вам надо резер­ви­ро­вать опи­са­ни­ем коман­ды backup:

При­мер:

  • backup <пользователь>@<адрес сервера>:/<путь до сохра­ня­е­мой папки>/./папка/ <пап­ка сохра­не­ния>

Так­же если у вас уста­нов­лен не клас­си­че­ский ssh сер­вер, а dropbear, то вам потре­бу­ет­ся создать али­ас, так как rsnapshot не уме­ет рабо­тать с dropbear.

Для это­го создай­те файл в пап­ке opt

  • # /opt/bin/drop_ssh:

Добавь­те сле­ду­ю­щее содер­жа­ние:

Добавь­те в файл кон­фи­гу­ра­ции rsnapshot /opt/etc/rsnapshot.conf ссыл­ку на али­ас:

  • cmd_ssh /opt/bin/drop_ssh

После чего мож­но запу­стить rsnapshot коман­дой:

  • $ /opt/rsnapshot alpha

Если оши­бок не будет, то мож­но доба­вить зада­чу в cron.

Для под­держ­ки USB нако­пи­те­лей потре­бу­ет­ся уста­но­вить допол­ни­тель­ные паке­ты. Их уже мож­но уста­нав­ли­вать и из основ­но­го репо­зи­то­рия про­ек­та OpenWrt:

  • $ opkg install usbutils kmod-usb-storage kmod-fs-ext4 block-mount

Установка и использование BorgBackup

Уста­нов­ка BorgBackup три­ви­аль­на и опи­са­на на стра­ни­це про­ек­та.

Сле­ду­ет отме­тить, что если уста­нав­ли­ва­е­те из репо­зи­то­рия, то сто­ит про­ве­рить, насколь­ко акту­аль­на уста­нов­лен­ная вер­сия. В ста­рых вер­си­ях может отсут­ство­вать важ­ный для вас функ­ци­о­нал.

Для нача­ла исполь­зо­ва­ния BorgBackup нуж­но ини­ци­а­ли­зи­ро­вать репо­зи­то­рий и выбрать, какой метод шиф­ро­ва­ния вам нужен (если нужен).

При­мер:

  • $ borg init –encryption=repokey-blake2 ./backup_repo_name

После того как репо­зи­то­рий создан, мож­но добав­лять в него фай­лы и пап­ки коман­дой create

При­мер:

  • $ borg create –list –compression auto,zlib ./backup_repo_name::{название для архи­ва} {спи­сок для бэка­па} –exclude {“пап­ки для исклю­че­ния”}

Даль­ней­шие добав­ле­ния новых инкре­мен­тов будут прак­ти­че­ски момен­таль­ны­ми.