Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Příkazový řádek a programování pro GNU/Linux => Téma založeno: SDan 29 Březen 2020, 19:45:51

Název: Zálohování dat [Vyřešeno]
Přispěvatel: SDan 29 Březen 2020, 19:45:51
Dobrý den.

Mám skript na zálohu dat. Spouštím ho manuálně, nebo via crontab - pokud ntb není vypnutý.

Jak spustit skript po startu ntb tak, aby zálohoval jen tehdy, když poslední záloha je starší X dnů?

Díky moc.
Název: Re:Zálohování dat
Přispěvatel: Michal "Tylnesh" Kohútek 30 Březen 2020, 08:54:50
V Crone to mozes nastavit aby sa to vykonavalo kazdych x dni. Vyhovovalo by to? Ak nie, tak v bashi si mozes spravit jednoduchy skript.

0 0 */3 * * ti vykona skript kazdy treti den o polnoci.
Název: Re:Zálohování dat
Přispěvatel: SDan 30 Březen 2020, 10:43:09
Crontab používám: 30 9 * * 3 /home/xyz/_SCRIPTY/Zaloha_DAT.sh

Problém: Pokud crontab, tak v plánovanou dobu musí být zařízení zapnuto.

Pokud skript Zaloha_DAT.sh zadám jako spustitelný po startu, tak se bude spouštět třeba 3x během dne, vždy když zapnu ntb

Druhá varianta je, že si nevzpomenu a ručně nespustím, tak nemám zálohu.

Název: Re:Zálohování dat
Přispěvatel: JirkaZ 30 Březen 2020, 10:48:31
Existuje i fcron, možná by stálo za to prozkoumat, zda neumožňuje nastavit více podmínek (či jejich vhodnější kombinaci) pro spuštění.
Název: Re:Zálohování dat
Přispěvatel: Michal "Tylnesh" Kohútek 30 Březen 2020, 12:58:28
Crontab používám: 30 9 * * 3 /home/xyz/_SCRIPTY/Zaloha_DAT.sh

Problém: Pokud crontab, tak v plánovanou dobu musí být zařízení zapnuto.

Pokud skript Zaloha_DAT.sh zadám jako spustitelný po startu, tak se bude spouštět třeba 3x během dne, vždy když zapnu ntb

Druhá varianta je, že si nevzpomenu a ručně nespustím, tak nemám zálohu.

Tiez mozes po spusteni cronom spustit skript/daemona, ktory cekne ci je zaloha starsia ako 3 dni a ak hej, spusti zalohovanie. Chce to trochu bashu, ale nemal by to byt problem. Ak by si fakt potreboval, tak si mozem s tym pomoct.
Název: Re:Zálohování dat
Přispěvatel: juwa2 30 Březen 2020, 13:26:54
Existuje i fcron, možná by stálo za to prozkoumat, zda neumožňuje nastavit více podmínek (či jejich vhodnější kombinaci) pro spuštění.

Ano, fcron je řešení, protože řeší situaci když je počítač v "naplánovaném čase" vypnutý/uspaný (zatímco u cronu takováto úloha neproběhne).
Fcron se nastavuje jednoduše a stejně jako cron (fcrontab -e). K dispozici jsou i "speciální" parametry. http://fcron.free.fr/doc/en/fcrontab.5.html

Pro Fcron neexistuje .deb balíček, musí se zkompilovat ze zdrojáku (doporučuji verzi 3.3.0). Není to ale obtížné. Po instalaci je třeba ještě vytvořit fcron usera a nastavit fcronu autospouštění po restartu (fcron musí běžet na pozadí).
Podrobný návod na dotaz, rovněž mohu poskytnout zkompilovaný fcron.
Název: Re:Zálohování dat
Přispěvatel: JirkaZ 30 Březen 2020, 16:55:58
...
Pro Fcron neexistuje .deb balíček, ...

Existuje, verze 3.0.1-1.3. Viz příloha (tam včetně automatického řešení závislostí).

No a kdo by byl líný přepisovat a hledat, tak pro 64bit je to http://old-releases.ubuntu.com/ubuntu/pool/universe/f/fcron/fcron_3.0.1-1.3_amd64.deb

Možná je někde jinde i novější, dál jsem nehledal.

Taky existuje mcron (viz např. https://www.gnu.org/software/mcron/manual/mcron.html), ten je normálně v repozitářích (sudo apt install mcron), ale nevím, zda vede cesta i tudy.
Název: Re:Zálohování dat
Přispěvatel: juwa2 30 Březen 2020, 17:10:29
To je ovšem značně "vousatá" verze...
Navíc je vytvořená pro distra bez systemd, takže např. autostart (fcronu) nebude funkční...

Nejlepší vychytávky jsou právě ve verzi 3.3.0
Deb balík opravdu není, ale jak jsem psal, kompilace je snadná, včetně instalace jsou to tři příkazy...
Název: Re:Zálohování dat
Přispěvatel: JirkaZ 30 Březen 2020, 17:15:58
To je ovšem značně "vousatá" verze...
Nejlepší vychytávky jsou právě ve verzi 3.3.0
Deb balík opravdu není, ale jak jsem psal, kompilace je snadná, včetně instalace jsou to tři příkazy...

Jo. To bys nesměl před chvílí přepsat ten překlep z 3.0.3 na 3.3.0... Minulost zatím měnili jen v 1984...
Název: Re:Zálohování dat
Přispěvatel: SDan 31 Březen 2020, 11:14:25
Vyřešil jsem to takhle:
Kód: [Vybrat]
#!/bin/sh

# Určení proměnných
x=$(date --reference=/home/xyz/ZALOHY_DAT/Zaloha.tar +%s)
y=$(date +%s)
z=604800               # 7 dní = 7*24*60*60 = 604800 vteřin
rozdil=$(($y - $x))    #vypocet rozdílu dne zálohování a datumu poslední zálohy

if(($rozdil>$z)) ; then

# Vytvoreni seznamu nainstalovanych balicku
dpkg --get-selections > /home/xyz/_SCRIPTY/Moje_instalace

#Přejmenování staré zálohy
mv /home/xyz/ZALOHY_DAT/Zaloha.tar /home/xyz/ZALOHY_DAT/Zaloha_$(date --reference=/home/xyz/ZALOHY_DAT/Zaloha.tar +%F).tar

#Vytvoreni zalohy dulezitych dat
tar -cvf Zaloha.tar /etc/apt/*.* --exclude hpli* --exclude ...... . 2>chyby_tar.log
echo "$(date): Nová záloha provedena" >> Zaloha.log

#Kopie zalohy dulezitych dat do adresare ZALOHY_DAT
mv -v Zaloha.tar ZALOHY_DAT

else
echo "$(date): Záloha není potřeba" >> Zaloha.log
fi

Název: Re:Zálohování dat [Vyřešeno]
Přispěvatel: JirkaZ 31 Březen 2020, 11:31:41
Kolik těch dat je a jak moc a jak často se mění?

Pokud je u všech tří bodů odpověď "dost" popř. "hodně", tak bych místo tar zvážil rsync. Jde o inkrementální způsob zálohování a může ušetřit hodně času.

No a nebo se to prostě dá rovnou porovnat.
Název: Re:Zálohování dat [Vyřešeno]
Přispěvatel: SDan 31 Březen 2020, 11:45:04
Primárně jsem chtěl vyřešit test na stáří zálohy. A to se mi povedlo. Záloha v *.tar mi vyhovuje.