Debian 10 'Backup' - 2. deo

Share on:

Zakazivanje 'Backup'-a pomoću 'Cron'-a


Cron je moćna alatka koja pod Linuxom izvršava komande ili skripte u određeno vreme ili u zadatim vremenskim intervalima.
Izuzetno korisna za zakazano pokretanje Backup skripti (što ćemo u drugom postu i demonstrirati)
Prvo da razjasnimo termine:

  • Cron: To je ime alata.Sam naziv dolazi od grčkog Χρόνος što znači vreme. Cron je daemon koji se startuje sa butovanjem sistema.
  • Crontab je kovanica (CRON + TABle), a u stvari je fajl koji sadrži raspored zadataka koje Cron treba da izvrši u određeno vreme.
  • Cron job ili Cron schedule je specijalni set izvršnih instrukcija kojima se određuju dan, vreme i komande za izvršavanje. Ukratko Crontan sadrži spisak Cron job-ova.

Scenario je sledeći:

  • Pretpostavka je da imamo postavljeni SAMBA server i na strani klijenta (u našem slučaju Virtuelna mašina pod Debianom 10) instalirani cifs-utils.
  • U VM definisaćemo Cron job kojim će Backup skripta da se periodično izvršava u određeno vreme.

Da krenemo redom:

  1. Proverimo prvo status Cron servisa pomoću komande:

    1sudo systemctl status cron.service
    

  2. Upoznajmo Cron job sintaksu:

    Ove zvezdice vam verovatno ništa ne znače, ali hajde da izlistamo postojeće zadatke koje Cron nadgleda i izvršava:

    1crontab -l
    

    • umesto prve zvezdice upisujemo 32, znači 32-gi minut
    • umesto druge zvezdice ide 11, odnosno 11-ti sat u danu
    • treća zvezdica predstavlja dane u mesecu i ako ostane na tome - znači da se zadatak izvršava svakog dana u mesecu.
    • četvrta zvezdica su meseci u godini i ako ne upišemo redni broj meseca (1 - 12) ili (jan, feb, mar, apr,...), dakle ostane zvezdica, zatatak će se izvršavati svakog meseca.
    • peta zvezdica su dani u nedelji (mon, tue, wed, thu, fri, sat, sun) ili (0 - 6), gde je nedelja 0 ili 7, a ostali dani 1 - 6 respektivno
    • /home/peja/Documents/demo_backup.sh je backup skripta sa apsolutnom putanjom
  3. Ovo prethodno bi bilo u slučaju kada aktivni korisnik postavlja zadatak.
    Mi ćemo postavit sistemski Cron job, pošto sistem i sam izvršava zakazane radnje nezavisno od korisnika, ali omogućava i ROOT ili SUDO korisniku da formira svoje Cron job-ove.

  4. Pripremimo Backup skriptu za kloniranje celog sistema uz izuzetak odabranih foldera:

    1#!/bin/bash
    2TMP=$(mktemp -d)
    3mount -t cifs //192.168.0.18/public/ "$TMP" -o username=speja,password=""
    4tar cpzvf "$TMP"/Buster_Box_v2__$(date +%d-%m-%Y).tgz --directory=/ --exclude=proc --exclude=tmp --exclude=media --exclude=lost+found --exclude=backup.tgz --exclude=mnt --exclude=sys /
    5umount "$TMP"
    6rmdir $TMP
    
    • //192.168.0.18/public/ je adresa SAMBA servera sa nazivom Samba Share-a u kome imamo ovlašćenje da čitamo i upisujemo
    • speja - username SAMBA korisnika ulogovanog na SAMBA klijentu (VM Dedian 10).
    • Postavljeni Samba Share je javni pa lozinka nije predviđena. Da jeste, bila bi upisana umesto navodnika, SAMBA klijent bi bio obavezan da poseduje SAMBA nalog na serveru, uz navedeni username među valid users korisnicima.
    • ***Buster_Box_v2__$(date +%d-%m-%Y).tgz*** je *Backup* arhiva koju skripta formira, dok su ostatak linije folderi izuzeti od bekapovanja sistema.
  5. Prethodnu skriptu pod nazivom koji ne uključuje tačke (.), smestimo u folder /etc/cron.d/ i dodelimo joj izvršna ovlaćenja:

    1sudo chmod +x /etc/cron.d/naziv-backup-skripte
    
  6. Otvorimo crontab:

    1sudo nano /etc/crontab
    

  7. Izmenimo SHELL=/bin/sh --> SHELL=/bin/bash

  8. Upišemo na kraju:

    1*  *  *  *  *     root    /etc/cron.d/naziv-backup-skripte  
    
    • zvezdicama definišemo vreme izvršavanja
    • CTRL+O --> ENTER --> CTRL+X #upamtimo i zatvorimo Crontab
  9. U zakazano vreme, trebalo bi da se obavi Backup celog sistema, dakle da se u folderu public (Samba Share), formira Backup komprimovani fajl u formatu
    Buster_Box_v2__dd-mm-yyyy.tgz:


Restore pomoću Live medija


  1. Pre oporavka sistema VM-e, izbrišimo nekoliko foldera da bi smo kasnije dokazali Restore njihovim postojanjem

  2. Daunlodujmo neki Live Linux, na primer Debian:
    debian-live-10.8.0-amd64-lxde+nonfree.iso

  3. U podešavanjima VM Debiana 10 čekiramo "Live CD/DVD" i izaberemo Live Debian iso fajl, kao što smo uradili sa Clonzillom

  4. Startujemo VM

  5. Dobićemo ovako nešto:

  6. Otvorimo Fajl menadžer PCManFM:

  7. Edit --> Preferences --> Layout --> Devices (čekiramo)

  8. Naša VM particija koju oporavljamo (Restore):
    /media/user/bo9e33a2-6317-4294-9832-b1b78289ae72

  9. Otvorimo LXTerminal:
    START --> System Tools --> LXTerminal i upišimo:

    1 sudo mousepad /usr/local/bin/restore-script
    
  10. Copy/Paste

    1#!/bin/bash
    2TMP=$(mktemp -d)
    3mount -t cifs //192.168.0.18/private/Backups "$TMP" -o username=*********,password=************
    4tar xvpfz "$TMP"/Buster_Box_v2__13-03-2021.tgz -C /media/user/bo9e33a2-6317-4294-9832-b1b78289ae72
    5umount "$TMP"
    6rmdir $TMP
    7# Ako smo u Backup skripti stavili naziv fajla: Buster_Box_v2__$(date +%d-%m-%Y).tgz
    8# U restore scripti = Buster_Box_v2__13-03-2021.tgz
    9# datum kad je Backup napravljen 13-03-2021
    
  11. Dodelimo izvršna ovlašćenja scripti

    1sudo chmod +x /usr/local/bin/restore-script
    
  12. I startujmo skriptu:

    1cd /usr/local/bin
    2sudo ./restore-script
    3sudo poweroff
    
  13. Uklonimo debian-live-10.8.0-amd64-lxde+nonfree.iso iz virtuelnog optičkog drajva u VirtualBox menadžeru:
    Settings --> Storage --> remove disk from virtual drive

  14. Startujemo VM

  15. Izbrisani folderi su tu:

korisni linkovi:
Cron Jobs and Crontab on Linux Explained
A Beginners Guide To Cron Jobs
How To Add Jobs To cron Under Linux or UNIX