Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: Zálohování dat [Vyřešeno]  (Přečteno 786 krát)

SDan

  • Člen
  • **
  • Příspěvků: 205
    • Zobrazit profil
Zálohování dat [Vyřešeno]
« kdy: 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.
« Poslední změna: 31 Březen 2020, 11:19:54 od SDan »

Michal "Tylnesh" Kohútek

  • Administrátor fóra
  • Stálý člen
  • ******
  • Příspěvků: 900
    • Zobrazit profil
    • Lords Of Tech
Re:Zálohování dat
« Odpověď #1 kdy: 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.
Registered Linux User #506395

--- Smartphone 0: OnePlus 3T - LineageOS bez Google Apps
--- Smartphone 1: Meizu MX4 - Ubuntu Touch
--- Laptop: Lenovo Thinkpad X1 Carbon Gen 3
--- Workstation: Ryzen 7 2700X, RX 5700XT, 16GB RAM
--- Other: Niekolko kusov od kazdeho vydaneho variantu Raspberry Pi

SDan

  • Člen
  • **
  • Příspěvků: 205
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #2 kdy: 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.


JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #3 kdy: 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í.

Michal "Tylnesh" Kohútek

  • Administrátor fóra
  • Stálý člen
  • ******
  • Příspěvků: 900
    • Zobrazit profil
    • Lords Of Tech
Re:Zálohování dat
« Odpověď #4 kdy: 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.
Registered Linux User #506395

--- Smartphone 0: OnePlus 3T - LineageOS bez Google Apps
--- Smartphone 1: Meizu MX4 - Ubuntu Touch
--- Laptop: Lenovo Thinkpad X1 Carbon Gen 3
--- Workstation: Ryzen 7 2700X, RX 5700XT, 16GB RAM
--- Other: Niekolko kusov od kazdeho vydaneho variantu Raspberry Pi

juwa2

  • Závislák
  • ****
  • Příspěvků: 3717
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #5 kdy: 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.
« Poslední změna: 30 Březen 2020, 17:11:01 od juwa2 »

JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #6 kdy: 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.
« Poslední změna: 30 Březen 2020, 17:08:03 od JirkaZ »

juwa2

  • Závislák
  • ****
  • Příspěvků: 3717
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #7 kdy: 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...
« Poslední změna: 30 Březen 2020, 17:23:00 od juwa2 »

JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #8 kdy: 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...

SDan

  • Člen
  • **
  • Příspěvků: 205
    • Zobrazit profil
Re:Zálohování dat
« Odpověď #9 kdy: 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


JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:Zálohování dat [Vyřešeno]
« Odpověď #10 kdy: 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.

SDan

  • Člen
  • **
  • Příspěvků: 205
    • Zobrazit profil
Re:Zálohování dat [Vyřešeno]
« Odpověď #11 kdy: 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.