[linux] backup met rsync, waarom werkt dit niet

meine trialero op gmx.com
Zo Sep 16 11:03:13 CEST 2018


> sudo rsync -aAXv / 
> --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} 
> /mnt

drie dingen vallen me op:

1. de exclude list gebruikt '*' om alle bestanden aan te duiden. AFAIK
is dat niet nodig en kan je volstaan met alleen de naam van de directory
te noemen. je kan in de string overigens ook verwijzen naar een
bestandje waar je de excludes in opsomt, werkt in de praktijk
makkelijker;

2. je schrijft de backup weg naar /mnt, zonder verdere duiding van een
volume waar je de backup naar toe wil schrijven. AFAIK is /mnt slechts
een ingang waar je alle gekoppelde volumes onder mount, ik zou eerder
iets van /mnt/backupvolume verwachten.
 
3. de string geeft aan dat je vanaf de root '/' alles wil syncen.
persoonlijk lijkt me dat wat veel worden, omdat zo ook je hele OS naar
de backup wordt geschreven. zelf heb ik de belangrijkste settings op
systeemniveau (bijv. /etc/hosts) in een file gekopieerd die in een map 
met mijn admin-zooi onder mijn eigen account staat. crasht je OS, dan 
kan je misschien beter een verse installatie doen en de betreffende 
settings terugkopieren. alternatief is een tweede rsync string te maken
die alleen _die_ systeembestanden backupt.

> De uitvoer leverde de volgende uitvoer op:
> 
> ../com/backupvol.txt
> sending incremental file list
> drwxr-xr-x              0 2018/07/25 05:03:56 mnt
> 
> sent 54 bytes  received 71 bytes  250.00 bytes/sec

het ziet er uit of alleen dat ene bestand 'backupvol.txt' is ge-rsynct.
dit zou aan de operators '-aAXv' kunnen liggen, zou je moeten opzoeken
in 'man rsync'. ik heb me daar nauwelijks in verdiept omdat ik een goed
werkende string had gevonden en die gebruik.
 
> Iemand van jullie die ziet waarom dit niet werkt, en er mogelijk wel
> toe in staat is?

ik gebruik zelf (nog) geen uitvoerbare bestanden, maar zet het commando
direct in de terminal --- heb je dat al geprobeerd? dan kan je zien of
het commando op zich goed werkt en dat het niet werken te maken heeft
met het niet werken van het uitvoerbare bestand an sich.

de backup string die ik gebruik staat in een alias van de root, hoef
alleen mijn backupvolume aan te koppelen --- opletten of dat is gebeurd
en waar het mountpoint zit: onder root of onder je eigen account, anders
kan rsync je backup op het te backuppen volume maken en dat geeft een
enorme rotzooi...

onderstaand is de string die ik voor rsync gebruik:

alias bak	'rsync -avhz --exclude-from '/media/rsync_freebsd/exclude-list-rsync' /home/ /media/rsync_freebsd/HOME_backup_all/ ; ( echo 'incremental backup_all @FreeBSD' ; date ; echo '----------' ) >> /media/rsync_freebsd/backup.rsync_all.log'

[het kan zijn dat de rsync operators bij mij in FreeBSD net wat anders
zijn dan in Linux (verschil grote/kleine letters), kan je gewoon in 
'man rsync' controleren]

* de 'exclude list' staat op het backup volume, exclude-list-rsync.txt
* is een gewone txt file met de onderstaande inhoud --- geen .iso en
* .img bestanden (te groot, meestal is er toch een nieuwere versie, dir
* .cache, etc):

-----

*.iso
*.img
.cache
.thumbnails
lost+found
*.Trash*

-----

* de exclude­list kan je aanpassen aan de boxen die je wil backuppen.
* van onze HTPC kopieer ik bijvoorbeeld alle video's en muziek handmatig
* op de backup omdat rsync daar te lang staat te rammelen op de grote
* bestanden die toch niet zijn veranderd;

* backup alleen van de /home directory, daar staan ook kopieen van
* belangrijke systeem settings;

* backup volume heet 'rsync_freebsd', met een map 'HOME_backup_all' waar
* de backup in wordt gemaakt. de toevoeging 'all' is omdat ik twee
* backups gebruik: deze is incrmenteel, de ander heeft 'now' op het
* einde en maakt een kopie van /home en gooit op /home gedelete
* bestanden ook op de backup weg;

* de 'echo' regel schrijft in een log op het backup volume een regel
* waar ik aan kan zien wanneer de laatste backup is gemaakt en de hele
* historie;

> PS het bestand backupvol was uitvoerbaar gemaakt met chmod +x,
> en op twee nanieren gedraaid: een keer met op de eerste regel
> #!/bin/bash en een keer zonder die toevoeging: maakt eniet uit

man bash --- heb geen idee, maar zou goed moeten zijn...

ik hoop dat je hier wat aan hebt, mooi klusje voor de zondagochtend ;)

//meine


Meer informatie over de Linux maillijst