Linux script – záloha souborů a složek

By | 08/02/2020

Last Updated on 20/07/2022 by administrator

Linux script – záloha souborů a složek

Motivace:

Tento linux script slouží pro zálohu libovolných složek a souborů na libovolné lokální či síťové úložiště. Script používám pro zálohu všech configů z Ubuntu serveru na síťové úložiště NAS.

Záloha je provedena nástrojem rsync, který slouží pro synchronizaci souborů a složek a minimalizuje přenos dat tím, že přenáší pouze rozdílové informace a zároveň pomocí kontrolního součtu porovnává skutečný obsah obou kopií [2]. Celý přenos je navíc šifrován přes SSH protokol.

OS:

Implementace byla prakticky prováděna na Ubuntu 20.04 LTS, Ubuntu 18.04 LTS a Ubuntu 12.04.5 LTS. Předpokládám, že postup je také aplikovatelný na ostatní verze Ubuntu.

Implementace:

Aktualizace seznamu balíčků z repozitářů:

sudo apt-get update

Instalace SSHPASS balíčku:

sudo apt-get install sshpass

Pozn. Prográmek sshpass v podstatě doplňuje funkci SSH klienta. Umožnuje zadání hesla jako parametr (volba -p) a tímpádem uživatel nemusí při každém přihlášení ručně zadávat přihlašovací heslo. To je užitečné, neboť se script může spouštět automaticky, přes cron (viz níže).

Linux script příklad vytvoření:

Soubor script vytvořit ve složce opt (složka opt je nejbezpečnější místo pro uložení scriptů [1]):

sudo vim /opt/script

Vložit do souboru script kód níže:

#!/bin/bash

sshpass -p "password" rsync --bwlimit=50000 -arRvhe "ssh -p 22" /etc/apache2/sites-available/ user@192.168.0.5:/volume1/backups/Linux_configs --delete

Legenda:

  • password – heslo, pro ověření na cílovém síťovém úložišti
  • –bwlimit=50000 – slouží pro omezení rychlosti (zde bude posílat 50000KBytes/s [50MBytes/s]) [4]
  • -a – archive mode – umožnuje rekurzivní kopírování se zachováním symbolických linků, oprávnění souborů a vlastnictví uživatelů a skupin s časovými razítky
  • -r – recursive – zahrne podsložky a podsoubory
  • -R – relative – zahrne celou cestu souboru či složky (od kořenového adresáře)
  • -v – verbose – ukecanost
  • -e – remote shell – pro případnou změnu SSH portu pro příkaz “ssh -p 22” [3]
  • -h – human-readable – výstupní čísla budou v čitelném formátu
  • –delete – pokud se smaže složka či soubor v zdrojové složce bude vymazán i v cílové složce
  • /etc/apache2/sites-available/ – co chci kopírovat (v tomto případě složku “sites-available” na Ubuntu serveru)
  • user@192.168.0.5:/volume1/backups/Linux_configs – kde chci kopírovat. V tomto případě na síťové úložiště NAS pod IP adresou 192.168.0.5 do složky “Linux_configs” pod uživatelem “user”. Uživatel “user” musí být vytvořený na cílovém síťovém úložišti.

Zabrousit do složky opt:

cd /opt

Povolit práva pro spouštění souboru script:

sudo chmod u+x script

Přes spuštěním scriptu je dobré se přihlásit na cílové úložiště pomocí SSH, zda na něm běží SSH server.

sudo ssh user@192.168.0.5

Výpis příkazu sudo ssh user@192.168.0.5. Je nutné potvrdit fingerprint – dopsáním yes a následně zadat heslo pro uživatele user:

ECDSA key fingerprint is 7b:bb:cc:dd:ee:4a:bb:cc:d7:ee:aa:bb:cc:9d:e1:.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.5' (ECDSA) to the list of known hosts.

Pokud dojde k úspěšnému připojení, lze soubor script spustit.

sudo ./script

Ověřit zda byla v tomto případě složka “sites-available” zkopírována na cílovém síťovém úložišti.

Tuning scriptu:

Máme-li více složek či souborů které je potřeba zálohovat, lze si například vytvořit jednu proměnnou pro každou složku či soubor umístěný jiné lokaci s využitím smyčky for. Vytvořený script ve složce opt je možné také zálohovat:

#!/bin/bash

snmp="/etc/snmp/"
ntp="/etc/ntp.conf"
syslog="/etc/rsyslog.*"
samba="/etc/samba/"
opt="/opt/"

for location in $snmp $ntp $syslog $samba $opt
do
sshpass -p "password" rsync --bwlimit=50000 -aRvhe "ssh -p 22" $location user@192.168.0.5:/volume1/backups/Linux_configs --delete
done

Povolení rsync na NAS Synology:

Jak již bylo zmíněno výše, soubory a složky se zálohují na mé síťové úložiště NAS Synology, běžící na IP 192.168.0.5. Nástroj rsync je nutné povolit:

Linux script - nastavení rsync

Automatizaci scriptu, lze provést pomocí nástroje Cron, což je správce úloh – viz článek níže:

Cron – správce úloh v Linuxu

Zdroje:

[1] https://askubuntu.com/questions/195652/is-there-a-standard-place-for-placing-custom-linux-scripts

[2] https://cs.wikipedia.org/wiki/Rsync

[3] https://www.poftut.com/specify-different-port-for-linux-rsync/

[4] https://www.cyberciti.biz/faq/how-to-set-keep-rsync-from-using-all-your-bandwidth-on-linux-unix/

 

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérký softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030

Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *