rsync

Meine Lösung
;)

 

Der ambitionierter User wills genau wissen :)

- rsync für meine persönlichen Daten im /home/user

Mit der Software rsync lassen sich die persönlichen Daten wunderbar auf eine handelsübliche externe USB Diks sichern.
Bei wiederholter Ausführung werden von der Quelle nur noch die neuen Daten auf das Ziel geschrieben.
Falls in der Quelle Daten gelöscht wurden, werden diese auch im Ziel gelöscht !
Am Ende werden die Quelle und das Ziel verglichen, damit man sieht ob alles funktionierte.
Dazu habe ich ein kleines Script geschrieben, welches ich hier gerne teile:
Diesen Code in eine Textdatei kopieren und abspeichern.
Die Pfade anpassen und schon gehts los. Die Quelle wird dabei nie gelöscht, keine Angst.

Vorsicht bei Windows (NTFS/FAT) Festplatten.
- Handelsübliche USB Festplatten sind ab Werk im Windows Format (NTFS) formatiert.
- rsync muss gesgt werden, dass das Ziel NTFS ist ! Sonst funktioniert das Backup nicht korrekt.
- Das alte FAT Format (Windows XP) kann zudem nicht mit Daten >4GB umgehen.

Warum das ?
NTFS kann mit Gross / Kleinschreibung nicht umgehen und auch die Berechtigung der Files in Windows, sowie die Zeitangaben passen nicht zu Linux.
Darum bitte unbedingt auf die unterschiedlichen Paramer achten. Ansonsten droht Datenverlust im Backup!
Falls Sie das ganze /home am Stück sichern wollen, wird es unter NTFS trotzdem zu einigen Meldungen kommen.
*
Parameter bei NTFS oder FAT (Windows) Festplatten
rsync -rtv -h -l -D --progress --delete-after --delete-excluded --modify-window=2  /path/to/ext4/ /path/to/ntfs/
Parameter bei EXT4 oder EXT3 (Linux) Festplatten
rsync -av --progress --delete  /path/to/ext4/ /path/to/ext4

Code

#!/bin/bash

# rsync script: - www.linux-x.com, Ric.Eschmann - +41 79 288 21 22
# Version 1
# Erstellt am : 2021-04-15
# Letzte Änderung :

#--- A N L E I T U N G  -> Das müssen Sie lesen !!!!--
<< 'Comment'

(: Bin ich Linux oder Windows :) !!! MEGA W I C H T I G !!!
1. Windows USB Festplatten sind mit NTFS formatiert und speichern keine Besitzerrechte der Daten.
2. Linux USB Festplatten sind mit EXT4 formatiert und speichern die Besitzerrechte der Daten.

Damit man auf EXT4 Festplatten von jedem Rechner schreiben kann, startet man ein Terminal und gibt
der Festplatte volle Zugriffsrechte für alle Benutzer: ->  sudo chmod 777 /run/media/user/backup-ext4
In Manjaro wird eine USB Festplatte vom System automatisch wie folgt eingehängt: /run/media/user/backup...
In Debian,Ubuntu,Linux Mint ist es der folgende Pfad : /media/backup...

Probieren Sie nie EXT4 rsync -av Optionen für Linux auf NTFS Festplatten für Windows laufen zu lassen.
Datenverlust und korrupte Files im Ziel sind garantiert, da NTFS keine Rechte und andere Gross/Kleinschreibe
Regeln kennt. Auch die Zeitangaben werden in Linux(EXT4) und Windows(NTFS) unterschiedlich gehandhabt.
NTFS,FAT32,exFAT Festplatten können unter Linux und diesem Script verwendet werden und werden darum
mit der für Windows nötigen Option -rtv angesprochen.
Bei NTFS/FAT wird der Trick "-time=--modify-window=2 -s" mitgegeben, wass die Zeitprüfung um ±2 Sekunde "verbiegt".
Falls in den zu transferierenden Daten Zeichensätze wie | oder #  bestehen, hat Windows(NTFS) Probleme damit.
Denken Sie daran, dass beim alten FAT32 lediglich max. 4GB grosse Daten gespeichert werden können !
NTFS , exFAT und EXT4 oder EXT3 sind von der Grössenbeschränkung nicht betroffen.

So, nun verstehen Sie, warum Sie bei den unteren Angaben bei "linux=JA" unbedigt den Wert "NEIN"
eingeben müssen falls Sie eine Windows FAT/NTFS/exFAT Platte nutzen !!!!!!

Daten AUSSCHLUSS (Exclude)
Sie können Ordner und Files vom Backup bewusst ausschliessen. Zbs. den Download Ordner , .cache oder .tmp Daten.
Dazu erstellen Sie eine Textdatei mit dem Namen "exclude.txt" in Ihrem /home Verzeichnis.
Zeilenweise können Sie nun .cache /tmp/* etc. einfügen.
(Unten im Script sehen Sie Beispiele oder nutzen Sie die fertige Datei auf www.linux-x.com)
Wenn keine Auschlussdatei angelegt wurde wird dieses Script ein leeres "exclude.txt" beim 1. lauf angelegen.

PROGRAMMSTART
Sie können diese Datei "backup-rsync_USB_Disk.sh" mit dem Dateimanager starten.
Dann gehen Sie in den Dateimanager und dann auf 'Eigenschaften/Zugriffsrechte.
Der Datei gben Sie mit der aktiviertendas Checkbox das Häckchen bei 'erlauben Sie als Programm auszuführen'.
Möchen Sie lieber im Terminal arbeiten: Dann geht das mit 'sh backup-rsync_USB_Disk.sh' Befehl.

Viel Spass.

Fragen -> www.linux-x.com

Comment


#============= H I E R   A N G A B E N   E I N G E B E N  ======================

linux=JA  #JA/NEIN <-- Wichtig !! Bitte anpassen! Ist das Ziel eine Linux (ext4/ext3) Festplatte ? JA / NEIN (GROSS geschrieben)
<< 'Comment'
oder nutzen Sie im Ziel >Windows< ?
Dann setzten Sie 'Linux=Nein' ein und somit wird das Ziel als Windows (FAT/NTFS/exFAT) Festplatte behandelt!!
           
# Den Pfad zum Quell- und Ziel Verzeichnis ohne abschliessenden Schrägstrich '/' angeben.
Comment
quelle=~/        # Welches Verzeichnis soll gesichert werden? (Im Beispiel ~/ wird /home als Quelle gelesen.)
ziel=/run/media/hello/backup_ext4/backup/Richi/hello    # Wo sollen die Sicherungen gespeichert werden?

#============ Ende Ihrer Linux oder Windows + Quelle, Ziel angaben  ================


# ------Ab hier muss man eigentlich nichts mehr ändern. Denken Sie an aber optional an die Aussschlüsse in ~/exclude.txt !

nosave=~/exclude.txt    # Ausschlüsse werden in "/home/exclude.txt" im Home Ordner von Ihnen zeilenweise eingetragen !
heute=$(date +%Y-%m-%d)     # Gibt dem Ziel Ordner das Tagesdatum mit . zbs. "2021-04-15_home"

#Start Textinfoparameter
function green_msg() {
echo -e "\\033[32;1m${@}\033[0m"
}

function blue_msg() {
echo -e "\\033[34;1m${@}\033[0m"
}

#Ende Start Textinfoparameter


#Start Begrüssung und Bestätigung ob Linux oder Windows Festplatte
if test $linux = "JA" #Hier NICHTS Ändern !!!
then
green_msg "\n\nDas Ziel ist eine < L  I  N  U  X >  (ext4/ext3/btrfs) Festplatte.\n\n"
else
green_msg "\n\nDas Ziel ist eine < W  I  N  D  O  W  S > (NTFS/FAT/exFAT) Festplatte.\n\n"
fi
green_msg "Haben Sie an die '/home/exclude.txt' Datei gedacht?"
green_msg "\n\nIn 30 Sekunden gehts los. Sie können jetzt mit mit CTRL-C noch abbrechen.\n\n"
sleep 20
blue_msg "\n\nSie haben noch 10 Sekunden Bedenkzeit :)\n\n"
sleep 10
green_msg "\n\n** Das Backup ist in Arbeit, Das kann dauern, bitte warten. . . \n\n"
#Ende Begrüssung

# Ausschlussdatei wird in /home/exclude.txt neu anlgelegt, nur falls noch keine existiert:
touch $nosave
sleep 3

# Abfrage der Festplatte (Linux"EXT4" oder Windows"NTFS"),gemäss Angaben die Sie mit "JA/NEIN" gesetzt haben.
if test $linux = "JA"
then
# LINUX Festplatten (EXT3/EXT4/BTRFS)
rsync -av --progress --delete --exclude-from="${nosave}" "${quelle}" "${ziel}_${heute}/" --link-dest="${ziel}_last/"
ln -nsf "${ziel}_${heute}" "${ziel}_last"
else
# Microsoft WINDOWS Festplatten (FAT32/NTFS/exFAT)
rsync -rtv -h -l -D --progress --delete-after --delete-excluded --exclude-from="${nosave}" --modify-window=2 "${quelle}" "${ziel}_${heute}/" --link-dest="${ziel}_last/"
ln -nsf "${ziel}_${heute}" "${ziel}_last"
fi


green_msg "\n\n*****Das Backup ist beendet. *****\n\n"

#---Daten Grösse Kontrolle ,Quelle vs. Ziel
green_msg "\n\n*****Kontrolle: Dateigroessen von Quelle und Ziel*****\n\n"
blue_msg "Wenn Sie Unterschiede feststellen, haben Sie vermutlich einige Daten ausgeschlossen.~/exclude.txt"
du -sh "${quelle}" "${ziel}_${heute}"


green_msg "In 2 Minuten wird dieses Fenster automatisch geschlossen."
blue_msg "Wenn Sie alles kontrolliert haben, können Sie nun auch mit CTRL-C das Script manuell stoppen."
sleep 120

# NOCH EINIGE INFORMATIONEN ZU RSYNC ---------------------------

#rsync Befehle mit Löschen im Ziel.
# Beispiele für rsync Einzeleinträge. Kann im Terminal aufgerufen werden.

#Bei EXT4 Formatierten Platten als Ziel ,mit Rechtevergabe und Zeit.
#rsync -av --progress --delete /path/to/ext4/ /path/to/ext4/

#Bei NTFS formatierten Platten als Ziel.
#rsync -rtv -h -l -D --progress --delete-after --modify-window=2 /path/to/ext4/ /path/to/ntfs/

# Zeitangabe im String:
# rsync -av --progress --delete /path/to/ext4/ /path/to/ext4$(date +\\%Y-\\%m-\\%d)

# rsync Optionen
#-a Das ist die Linux Archiv Vollmilchsau. Recursiv und behält File Rechte, symbolische links, file Besitzer, etc.
#-r rekursiv, aber ohne Besitzerangaben des users and Gruppen, Rechte, Zeitstempel, symbolische links.
#-v Verbose,zeigt im Fenster Anagben über die laufende Verarbeitung an.
#-p Progress, Zeigt detailierte Anagben der einzelnen Dateien an. Grösse, Fortschritt, Geschwindikeit
# Für Windows NTFS/FAT nutze ich die gleichen Optionen wie die Software "Lucky Backup". ..und es funktioniert..

# Nun Beispiele für meist verwendete Ausschlüsse vom Backup. Nützlich, wenn Sie zbs. / oder /home sichern möchten.
# Ausschlüsse werden in "exclude.txt" im Home Ordner zeilenweise eingetragen.
<< 'Comment'
    
.gvfs
**/.gvfs/
.cache/*
.thumbnails*
.local/share/[Tt]rash*
*.backup*
*~
.dropbox*
/proc/*
/sys/*
/dev/*
/run/*
/etc/mtab
/var/cache/apt/archives/*.deb
lost+found/*
/tmp/*
/var/tmp/*
/var/backups/*
.Private
VirtualBox\ VMs/*
.VirtualBox
.dosbox
.java
.macromedia
.moonchild\ productions/*
.tvbrowser
.PlayOnLinux
.wine
.gvfs
.cache/*
.thumbnails*
.local/share/[Tt]rash*
*~
**~
.dropbox*
/proc/*
/sys/*
/dev/*
/run/*
/etc/mtab
/var/cache/apt/archives/*.deb
lost+found/*
/tmp/*
/var/tmp/*
/var/backups/*
.Private
VirtualBox\ VMs/*
.VirtualBox
.dosbox
.java
.macromedia
.moonchild\ productions/*
.tvbrowser
.PlayOnLinux
.wine
**~
/mnt/*/**
/media/*/**
/var/run/**
/run/**
/proc/**
/dev/**
/sys/**


Comment
exit