Komfortables Backup Script mit rsync lt. ArchWiki

Manjaro Linux Tutorials von Usern für User!
Antworten

Themen Author
caho

Komfortables Backup Script mit rsync lt. ArchWiki

#1

Beitrag von caho »

Hallo Freunde,

Da es hier https://de.manjaro.org/index.php?topic=1766.0 schon sehr gut angenommen wurde, findet ihr auch hier das Script:

da ich schon seit langem meine Backups per rsync auf eine externe USB Platte durchführe, habe ich jetzt ein Script geschrieben, das mit einem einfachen Auswahlmenü folgende Sicherungen mit rsync mit folgendem Ablauf erlaubt:

Medium wird gemountet
Prüfung, ob Medium erfolgreich gemountet wurde
Prüfung, ob die Testdatei auf dem Medium vorhanden wurde
Auswahlmenü für die Sicherung

    Sicherung komplett System
    Sicherung /home
    Sicherung komplett System und separat /home
    Abbruch

Unmounten des Sicherungsmediums

Alle Sicherungsparameter können am Beginn des Scripts entsprechend gesetzt werden.

Das Script muss per chmod ausführbar gemacht werden. Aufruf erfolgt mit sudo ...

Das Script ist durch die wenigen Variablen

Code: Alles auswählen

#Sicherungsparameter setzen
UUID='adcd639e-589c-4ea4-829b-87d334b67a12'	#UUID des Sicherungsmediums - UUID feststellbar durch sudo blkid
BackupMntDir='/mnt' 				# Einhängepunt für BackupDrive
ToHomeBackupDir='/backup'			#Zielverzeichnis für Home Backup
ToSystemBackupDir='/full_system_backup'		#Zielverzeichnis für Systembackup
TestFile=backup_hdd.txt 			#Textdatei auf der Backup HD zum Testen - Datei manuell angelegt
ganz schnell den eigenen Bedürfnissen angepasst.

Die UUID findet Ihr heraus mit

Code: Alles auswählen

sudo blkid
Die Ausgabe sieht dann beispielsweise so aus:

Code: Alles auswählen

/dev/sda1: UUID="8058363558362A74" TYPE="ntfs" PARTUUID="62bf8bb1-01"
/dev/sda2: LABEL="Boot" UUID="9A56B7C456B79F85" TYPE="ntfs" PARTUUID="62bf8bb1-02"
/dev/sda3: UUID="90FA8EBDFA8E9F5A" TYPE="ntfs" PARTUUID="62bf8bb1-03"
/dev/sda4: LABEL="Manjaro64" UUID="f8fcfdec-f283-4949-af91-4bf71e1a36bf" TYPE="ext4" PARTUUID="62bf8bb1-04"
/dev/sdb1: LABEL="DATA" UUID="3A9E14A89E145F27" TYPE="ntfs" PARTUUID="d8811f7c-01"
/dev/sdd1: UUID="adcd639e-589c-4ea4-829b-87d334b67a12" TYPE="ext4" PARTUUID="d1369cb6-01" 
In meinem Fall war die externe HD als /dev/sdd1 gemountet. Die UUID steht neben der Gerätedatei. Hier

Code: Alles auswählen

adcd639e-589c-4ea4-829b-87d334b67a12

Im folgenden noch einmal das komplette Backupscript zum Kopieren, jedoch unter Benutzung der UUID  des Speichermediums.

Code: Alles auswählen

#!/bin/bash

# Mit diesem Script kann man mit rsync folgende Sicherungen erstellen:
#	Systemsicherung komplett entsprechend rsync Ach Wiki
#	Sicherung nur /Home
#	Kombinierte Sicherung - erst System komplett und dann /home
#
#
#Ablauf:
#Vorgaben für Backup in Variablen festlegen
#mount Externe HD
#Prüfung, ob Mount erfolgreich
#Prüfung, ob Testdatei auf der ext. HD vorhanden ist - Bewusst auf BackupHD angelegt
#Auswahl auf Backup-Umfang
#rsync Backuplauf je nach Auswahl
#Wartezeit
#umount Externe HD

#Sicherungsparameter setzen
UUID='adcd639e-589c-4ea4-829b-87d334b67a12'	#UUID des Sicherungsmediums - UUID feststellbar durch sudo blkid
BackupMntDir='/mnt' 				# Einhängepunt für BackupDrive
ToHomeBackupDir='/backup'			#Zielverzeichnis für Home Backup
ToSystemBackupDir='/full_system_backup'		#Zielverzeichnis für Systembackup
TestFile=backup_hdd.txt 			#Textdatei auf der Backup HD zum Testen - Datei manuell angelegt

clear

#Verzeichnis mounten und prüfen, ob es funktioniert hat

mount /dev/disk/by-uuid/$UUID $BackupMntDir

if [ $? -eq 0 ]; then
    echo ---
    echo ---
    echo "Backup HD erfolgreich gemountet"
    echo ---
    echo ---
else
    echo ---
    echo ---
    echo "Backup HD NICHT gemountet"
    echo ---
    echo ---
    exit
fi


#countdown
printf "\nPrüfung ob Testdatei vorhanden in: "
TIMER=3
until [ $TIMER = 0 ]; do
    printf "$TIMER..."
    TIMER=`expr $TIMER - 1`
    sleep 1
done
echo ---


#Prüfung, ob die testdatei vorhanden ist

cd $BackupMntDir
if [ -e $TestFile ]; then
    echo ---
    echo ---
    echo "$UUID Erfolgreich eingehängt - TestDatei $TestFile vorhanden"
    echo ---
    echo ---
else
    echo ---
    echo ---
    echo "$UUID wurde nicht einhangen - TestDatei $TestFile fehlt"
    echo ---
    echo ---
    #countdown
    TIMER=3
    printf "\nKurze Pause: "
    until [ $TIMER = 0 ]; do
	printf "$TIMER..."/mnt/backup
	TIMER=`expr $TIMER - 1`
	sleep 1
    done
echo ---
    exit
fi


echo ---
echo --- Auswahl Backup - Umfang ---
echo ---

#Auswahlmenü

PS3='Backup Auswahl: '
options=("System" "Home" "System und Home" "Quit")

select opt in "${options[@]}"
do
    case $opt in
        "System")
            echo ---
            echo ---
	    echo ---
	    #countdown
	    TIMER=3
	    printf "\n System Backup start in : "
	    until [ $TIMER = 0 ]; do
		printf "$TIMER..."
		TIMER=`expr $TIMER - 1`
		sleep 1
	    done
	    echo ---
	    rsync -aAXv /* $BackupMntDir$ToSystemBackupDir --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*",/lost+found} --delete --log-file=rsynclog_full.txt

	    #rsync Backup zurücksichern:
	    #rsync -aAXv $BackupMntDir$ToSystemBackup / --delete

	    echo ---
	    echo ---
	    echo --- Beendet System Backup ---
	    echo ---
	    echo ---
            break
            ;;
        "Home")
	    echo ---
	    echo ---
            echo ---
	    echo ---
	    #countdown
	    TIMER=3
	    printf "\nHome Backup start in: "
	    until [ $TIMER = 0 ]; do
		printf "$TIMER..."
		TIMER=`expr $TIMER - 1`
		sleep 1
	    done
	    echo ---
	    echo ---
	    echo ---

	    rsync -av /home $BackupMntDir$ToHomeBackupDir --delete --log-file=rsynclog_home.txt
	   
	    echo ---
	    echo ---
	    echo Beendet Home Backup
	    echo ---
	    echo ---
            break
            ;;
        "System und Home")
	    echo ---
	    echo ---
            echo "Backup System und Home läuft"
            echo ---
	    echo ---
	    echo ---
	    echo ---

	    #countdown
	    TIMER=3
	    printf "\nSystem Backup start in: "
	    until [ $TIMER = 0 ]; do
		printf "$TIMER..."
		TIMER=`expr $TIMER - 1`
		sleep 1
	    done
	    echo ---
	      rsync -aAXv /* $BackupMntDir$ToSystemBackupDir --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*",/lost+found} --delete --log-file=rsynclog_full.txt

	    #rsync Backup zurücksichern:
	    #rsync -aAXv $BackupMntDir$ToSystemBackupDir / --delete

	    echo ---
	    echo ---
	    echo --- Beendet System Backup ---
	    echo ---
	    echo ---
	    #countdown
	    TIMER=3
	    printf "\nHome Backup start in: "
	    until [ $TIMER = 0 ]; do
		printf "$TIMER..."
		TIMER=`expr $TIMER - 1`
		sleep 1
	    done

	    echo ---
	    echo ---
	    echo ---

	    rsync -av /home $BackupMntDir$ToHomeBackupDir --delete --log-file=rsynclog_home.txt
	 
	    echo ---
	    echo ---
	    echo Beendet Home Backup
	    echo ---
	    echo ---

	    break
            ;;
        "Quit")
	    echo --
	    echo "Backup abgebrochen"
	    echo ---
            break
            ;;
        *) echo Falsche Eingabe;;
    esac
done
echo ---


#countdown
TIMER=10
printf "\nBackuplauf beendet in: "
until [ $TIMER = 0 ]; do
    printf "$TIMER..."
    TIMER=`expr $TIMER - 1`
    sleep 1
done

umount -l $BackupMntDir

echo ---
echo --- Fertig ---
echo ---

Und hier noch einmal die Kurzversion:
"System" sichert alles incl. /home nach
ToSystemBackupDir='/full_system_backup'
"Home" sicher nur /home nach
ToHomeBackupDir='/backup'
System + Home sichert in einem Rutsch zuerst wie oben beschrieben "System" und anschließend wie oben beschrieben "Home". Die Sicherungdateien von /home sind also zweimal vorhanden.

Gruß
caho
Zuletzt geändert von caho am Donnerstag 21. Juli 2016, 08:11, insgesamt 1-mal geändert.
Antworten

Zurück zu „Manjaro Linux Tutorials“