python GUI applicatie backups maken met fsarchiver

python GUI applicatie backups maken met fsarchiver



GUI applicatie backups, consistent backups maken, achiveerinfo en restore met fsarchiver


geschreven met programmeertaal python met gebruik van Gtk 3.0
nodig : 

  • installeer het fsarchiver pakket :
    • sudo apt install fsarchiver

  • installeer LVM
    • sudo apt install lvm2




  • zet al  je fysische partities swap, boot, home, root , data op één volume en zet ze op logische volumes binnen één volume groep
  • maak op zijn minst 6 G vrij voor de snapshot

Deze applicatie selecteer een device (fysische, logische partitie, LVM partitie) en maakt backups dmv de fsarchiver utility
Er is ook mogelijk een restore te doen met fsarchiver en info te vragen ivm een gearchiveerd bestand.

beginscherm :


Eerste gedeelte

Deze applicatie kan gebruikt worden om een device te backuppen met fsarchiver.
Dit kan gedaan worden met invullen van eerste gedeelte zie gekleurde rechthoek



Het kan ook gebruikt worden om een restore te doen van een gearchiveerd bestand naar een device !
Hiervoor wordt het tweede gedeelte gebruikt.
Je kan ook informatie ophalen hoe een gearchiveerd bestand gearchiveerd is met de fsarchiver utility.

bijgeleverde bestanden
  • myarchive.py : python source GUI
  • myarchive2.py : python source opgeroepen door bash shell lstcommands.sh
  • myarchive_snapshot.py : python source GUI
    • hierbij kan men LVM boot, root, home en data logische partities backuppen
    • als men knop Snapshot :  
      aankruis kan men consistente backups maken ; hierbij wordt een snapshot van het bestandensysteem genomen
en daarna wordt de backup genomen ; ondertussen kan mijn wijzigingen doen op dit bestandensysteem !
  • Enkel mogelijk met LVM partities !



Backup nemen

hier een voorbeeld

hierboven zie je hoe een backup kan genomen worden :



  • een device wordt geselecteerd uit de Combobox van "Bestandsystemen te archiveren" : hie mijn LVS boot device
  • de Foldernaam demo werd geselecteerd in de tweede comboboxt
  • een compressie nummer werd geselecteerd , hier nr 6 (gelieve niet de hoogste compressie 9 te nemen anders werkt het fsarchiver commando heel wat trager !)
  • aantal cpus/threads : afhankelijk van het aantal cpu's van je computer, hier werd 4 geselecteerd
  • "splitsen in aantal blokken van 1 G" , hier werd 1 geselecteerd dwz dat de archivering zal gesplitst worden in blokken van 1 G
  • de knop 'Uitvoeren" werd hierbij geselecteerd om de backup te starten .




hierboven zie je dat de backup beëindigd is : zie status "Start 18:14:04 " (= gestart om 18u14min04sec ) en het duurde 12 seconden. "Done" betekent dat de backup beëindigd is"
in terminal zie het commando dat uitgevoerd werd en wat meer info:

  1. eerst werd het commando = 'sudo lvcreate - L 6G -s -n mysnap /dev/mapper/mydell-boot' uitgevoerd
(dit kan enkel succesvol uitgevoerd worden als er nog 6G vrij is op je Volumegroep hier mydell)
  1. daarna wordt het commando = 'sudo fsarchiver -A -z 6 -s 1000 4 savefs /home/ulefr01/demo/backup_boot-201711051814.fsa /dev/mapper/mydell-mysnap'
(dit doet de eigenlijke backup)
  1. daarna de snapshot vrijgegegeven
het commando = 'sudo lvremove -vf /dev/mapper/mydell-boot'

in de terminal zie je de creatie van let logische volume "mysnap" ; hier werd per default 6G gebruikt
Reducing COW size 6,00 GiB down to maximum usable size 1,01 GiB.
Logical volume "mysnap" created.
Vervolgens zie je fsarchiver informatie ivm met de backup :
Archive will be split into volumes of 1048576000 bytes (1000.00 MB)
Statistics for filesystem 0

  • files successfully processed:....regfiles=321, directories=6, symlinks=0, hardlinks=0, specials=0
  • files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0

De status line = 'Start 18:14:04 Run time: 12 seconden Done !'
De backup is gestart om 18:14:04 gestart en heeft 12 seconden geduurd.
'Done' betekent dat de backup beëindigd is.

Tweede gedeelte is om een restore te doen

in het eerste veld moet de naam van een backup bestand ingevuld worden :

hierbij werd bovenstaande backup genomen als input
daarna wordt informatie van die backup getoond :


om een gearchiveerd bestand terug te zetten moet ook de laatste twee velden ingevuld worden :
  • positie in gearchiveerd bestand normaal 0
  • device selecteren naar waar de restore gebeurd.

Druk op 'Uitvoeren' om de eigenlijke restore te doen


hierboven zie je dat de restore gestart is


Hierboven zie je dat de restore beëindigd is , status lijn toon Done , restore heeft 4 seconden geduurd.
Links op de terminal zie je statistieken van de restore

Hier een demo

in terminal doe ik hetvolgende :
  1. eerst maak ik een folder = demo
ulefr01@:[~]: mkdir demo
ulefr01@:[~]: ls demo -dl
drwxrwxr-x 2 ulefr01 ulefr01 4096 nov 5 18:06 demo
  1. ga binnen
ulefr01@:[~]: cd demo
ulefr01@:[~/demo]: ls * -la
niks gevonden daar het nog leeg is
ls: kan geen toegang krijgen tot '*': Bestand of map bestaat niet

ulefr01@:[~/demo]: losetup -l

nog niks
  1. hier zie je wat moet gebackupd worden , ik wil mijn LVS boot device backuppen

ulefr01@:[~/demo]: ls /boot/* -la
-rw-r--r-- 1 root root  1408605 mei 16 05:53 /boot/abi-4.8.0-53-generic
-rw-r--r-- 1 root root   199564 mei 16 05:53 /boot/config-4.8.0-53-generic
-rw-r--r-- 1 root root 43358826 okt 24 22:52 /boot/initrd.img-4.8.0-53-generic
-rw-r--r-- 1 root root   182704 jan 28  2016 /boot/memtest86+.bin
-rw-r--r-- 1 root root   184380 jan 28  2016 /boot/memtest86+.elf
-rw-r--r-- 1 root root   184840 jan 28  2016 /boot/memtest86+_multiboot.bin
-rw------- 1 root root  4066743 mei 16 05:53 /boot/System.map-4.8.0-53-generic
-rw-r--r-- 1 root root  7308416 jun 28 14:29 /boot/vmlinuz-4.8.0-53-generic

/boot/grub:
totaal 2392
drwxr-xr-x 5 root root    4096 okt 24 23:37 .
drwxr-xr-x 4 root root    4096 okt 24 22:52 ..
drwxr-xr-x 2 root root    4096 okt 22 22:32 fonts
-rw-r--r-- 1 root root     712 jun 28 14:17 gfxblacklist.txt
-r--r--r-- 1 root root    9345 okt 24 23:37 grub.cfg
-rw-r--r-- 1 root root    1024 nov  5 16:56 grubenv
drwxr-xr-x 2 root root   12288 okt 24 23:38 i386-pc
drwxr-xr-x 2 root root    4096 okt 24 23:38 locale
-rw-r--r-- 1 root root 2398585 jun 28 14:17 unicode.pf2
ls: kan map '/boot/lost+found' niet openen: Toegang geweigerd

  1. ik probeer nu de restore te doen op een bestand = boot_file

ulefr01@:[~/demo]: dd if=/dev/zero of=boot_file bs=1G count=1
1+0 records gelezen
1+0 records geschreven
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 5,26777 s, 204 MB/s

  1. maak een ext4 bestandensysteem

ulefr01@:[~/demo]: sudo mkfs.ext4 boot_file
[sudo] wachtwoord voor ulefr01: 
mke2fs 1.42.13 (17-May-2015)
Verwerpen van blokken: voltooid                        
Aanmaken van bestandssysteem met 262144 blokken (van 4K) en 65536 inodes.
Bestandssysteem-UUID: 35bcbe8b-d3d7-42b9-9da5-76582b630d71
Superblokreservekopieën zijn opgeslagen in blokken: 
 32768, 98304, 163840, 229376

Reserveren van groepstabellen: voltooid                        
Schrijven van inodetabellen: voltooid                        
Aanmaken van journal (8192 blokken): voltooid
Schrijven van superblokken en bestandssysteem-metagegevens: voltooid

  1. gebruik een loop device
ulefr01@:[~/demo]: sudo losetup /dev/loop0 boot_file
  1. maak een folder tmp
ulefr01@:[~/demo]: mkdir tmp
  1. mount het bestandensysteem
ulefr01@:[~/demo]: sudo mount boot_file tmp
  1. hier zie je dat er nog niks op staat :

ulefr01@:[~/demo]: ls tmp/* -la
ls: kan map 'tmp/lost+found' niet openen: Toegang geweigerd
ulefr01@:[~/demo]: ls tmp/* -dla
drwx------ 2 root root 16384 nov  5 18:09 tmp/lost+found

  1. nu doe ik de umount anders kan ik niet de restore doen :
ulefr01@:[~/demo]: sudo umount tmp
  1. de python applicatie wordt gestart , dit om de restore naar dit boot_file te kunnen doen
ulefr01@:[~/demo]: python /data/py/myarchive_snapshot.py
















  1. nu zie je terug het beginscherm :

  1. het tweede gedeelte wordt nu ingevuld :

klik op bestandensysteem van 'archiveer bestandsnaam' : zie rechthoek

nu kan je een folder en bestand selecteren van je gemaakte backup
hier : backup_boot-201711051814.fsa
selecteer : 0
terug zetten opo het loop device : /dev/loop0


Druk op 'Uitvoeren om de restore te doen !


  1. wacht tot je 'Done' ziet op de statuslijn
u ziet nu op de terminal

('my_cmd = ', 'sudo lvcreate -L 6G -s -n mysnap /dev/mapper/mydell-boot && sudo fsarchiver -A -z 6 -s 1000 -j 4 savefs /home/ulefr01/demo/backup_boot-201711051814.fsa /dev/mapper/mydell-mysnap && sudo lvremove -vf /dev/mapper/mydell-boot')
  Reducing COW size 6,00 GiB down to maximum usable size 1,01 GiB.
  Logical volume "mysnap" created.
Archive will be split into volumes of 1048576000 bytes (1000.00 MB)
Statistics for filesystem 0
* files successfully processed:....regfiles=321, directories=6, symlinks=0, hardlinks=0, specials=0
* files with errors:...............regfiles=0, directories=0, symlinks=0, hardlinks=0, specials=0
    Using logical volume(s) on command line.
    Archiving volume group "mydell" metadata (seqno 16).
    Removing snapshot mysnap
    Loading mydell-boot table (253:1)
    Loading mydell-mysnap table (253:7)
    mydell/snapshot0 already not monitored.
    Suspending mydell-boot (253:1) with device flush
    Suspending mydell-mysnap (253:7) with device flush
    Suspending mydell-boot-real (253:5) with device flush
    Suspending mydell-mysnap-cow (253:6) with device flush
    activation/volume_list configuration setting not defined: Checking only host tags for mydell/mysnap
    Resuming mydell-mysnap-cow (253:6)
    Resuming mydell-boot-real (253:5)
    Resuming mydell-mysnap (253:7)
    Removing mydell-mysnap-cow (253:6)
    Resuming mydell-boot (253:1)
    Removing mydell-boot-real (253:5)
    Removing mydell-mysnap (253:7)
    Releasing logical volume "mysnap"
    Creating volume group backup "/etc/lvm/backup/mydell" (seqno 18).
  Logical volume "mysnap" successfully removed
    Device dm-1 (253:1) appears to be mounted on /boot.
  Logical volume mydell/boot contains a filesystem in use.
fsarchiver commando : Start: 18:14:04 Run time: 12 seconden Done !


Op de GUI ziet ge op de status lijn : ' Start 18;19:06 Run time : 4 seconden Done !'

Dit betekent dat de restore gedaan is.
In terminal zie je ook informatie en statistieken


  1. Nu gaan we het bestand mounten :
ulefr01@:[~/demo]: sudo mount boot_file tmp


  1. nu kijken wat erop staat :

ulefr01@:[~/demo]: sudo ls tmp/* -dla
-rw-r--r-- 1 root root  1408605 mei 16 05:53 tmp/abi-4.8.0-53-generic
-rw-r--r-- 1 root root   199564 mei 16 05:53 tmp/config-4.8.0-53-generic
drwxr-xr-x 5 root root     4096 okt 24 23:37 tmp/grub
-rw-r--r-- 1 root root 43358826 okt 24 22:52 tmp/initrd.img-4.8.0-53-generic
drwx------ 2 root root    16384 okt 22 22:25 tmp/lost+found
-rw-r--r-- 1 root root   182704 jan 28  2016 tmp/memtest86+.bin
-rw-r--r-- 1 root root   184380 jan 28  2016 tmp/memtest86+.elf
-rw-r--r-- 1 root root   184840 jan 28  2016 tmp/memtest86+_multiboot.bin
-rw------- 1 root root  4066743 mei 16 05:53 tmp/System.map-4.8.0-53-generic
-rw-r--r-- 1 root root  7308416 jun 28 14:29 tmp/vmlinuz-4.8.0-53-generic
ulefr01@:[~/demo]: sudo ls tmp/grub/* -dla
drwxr-xr-x 2 root root    4096 okt 22 22:32 tmp/grub/fonts
-rw-r--r-- 1 root root     712 jun 28 14:17 tmp/grub/gfxblacklist.txt
-r--r--r-- 1 root root    9345 okt 24 23:37 tmp/grub/grub.cfg
-rw-r--r-- 1 root root    1024 nov  5 16:56 tmp/grub/grubenv
drwxr-xr-x 2 root root   12288 okt 24 23:38 tmp/grub/i386-pc
drwxr-xr-x 2 root root    4096 okt 24 23:38 tmp/grub/locale
-rw-r--r-- 1 root root 2398585 jun 28 14:17 tmp/grub/unicode.pf2

  1. umount het bestandensysteem :
ulefr01@:[~/demo]: sudo umount tmp
  1. loop device is nog actief :

ulefr01@:[~/demo]: losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /home/ulefr01/demo/boot_file

  1. loop device wegdoen :
ulefr01@:[~/demo]: sudo losetup -d /dev/loop0
  1. nu kan je zien dat het loop device weg is :
ulefr01@:[~/demo]: losetup -l
er wordt niks vermeld
  1. opkuis :
ulefr01@:[~/demo]: ls

backup_boot-201711051814.fsa  boot_file  tmp
    ulefr01@:[~/demo]: rm backup_boot-201711051814.fsa 
 rm: normaal bestand 'backup_boot-201711051814.fsa' (schrijfbeveiligd) verwijderen? j
    ulefr01@:[~/demo]: rm boot_file 
 rm: normaal bestand 'boot_file' verwijderen? j
    ulefr01@:[~/demo]: rmdir tmp
    ulefr01@:[~/demo]: cd ..
    ulefr01@:[~]: rmdir demo
    ulefr01@:[~]:

Bijgeleverd : myarchive_snapshot.py
zie python_bestand_myarchive_snapshot.py

Hier bijgeleverd de uitvoering van een backup gemaakt op 9 november 2017 : zie Terminal output van een backup gemaakt met de GUI python applicatie

Geen opmerkingen:

Een reactie posten