Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: SDan 29 Března 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.
-
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.
-
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.
-
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í.
-
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.
-
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.
-
...
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.
-
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...
-
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...
-
Vyřešil jsem to takhle:
#!/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
-
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.
-
Primárně jsem chtěl vyřešit test na stáří zálohy. A to se mi povedlo. Záloha v *.tar mi vyhovuje.