[] rsync Backup von /home/user - Script von MSfree

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

[] rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 14.01.2022 10:17:28

viewtopic.php?t=182681#p1292743


Hallo Forum,

Einstieg

https://rsync.samba.org/
Bild

Mit einem Bild kommt es mir vor wie eine GUI. :-)

Später stelle ich mir so etwas vor:
Automatische Datensicherung: Backup-Script mit rsync bei Einstecken einer externen Festplatte
https://www.bitblokes.de/automatische-d ... estplatte/
Oberklasse:
https://glt16-programm.linuxtage.at/sys ... z_2016.pdf
https://i.imgur.com/FWiKhby.jpg

Script von MSfree
pastebin/?mode=view&s=40928

Code: Alles auswählen


        #/bin/bash
        #=====================================================
        # anpassen:
        #=====================================================
        #  SRC = Hostname und Freigabename der Quelle
        SRC=quellrechner::pub
         
        #  DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden
        DSTDIR=/volume1/backup
         
        #  HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden
        HTMLLOGDIR=/volume1/RSyncLog
         
        #  PREFIX: "Vorsilbe", die den täglichen Unterverzeichnisnamen vorgehängt wird
        PREFIX=daily
         
        #=====================================================
        # automatische Variablen, keine Anpssung nötig
        #=====================================================
        # aktuelles Datum
        DATE=`date +%d.%m.%y`
        # Zielverzeichnis
        DST=$DSTDIR/$PREFIX-$DATE
        # temporäres Verzeichnis
        BUS=$DSTDIR/.running-$DATE
        # Logdateiname
        LOG=$DSTDIR/log/log-$DATE.log
        # HTML-Logdatei
        HTMLLOG=$HTMLLOGDIR/log-$DATE.html
        # gestriges Verzeichnis
        PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1`
         
        #=====================================================
        # anlegen der Ausgabeverzeichnisse
        #=====================================================
        if test ! -d $DSTDIR
        then
        mkdir $DSTDIR
        fi
         
        if test ! -d $DSTDIR/log
        then
        mkdir $DSTDIR/log
        fi
         
        #=====================================================
        # Kopf der Logdate erzeugen
        #=====================================================
        CURRENTTIME=`date -u`
        echo "================================================" > $LOG
        echo "Started at " $CURRENTTIME >> $LOG
        echo "================================================" >> $LOG
        echo "Fetching from " $SRC >> $LOG
        echo "Storing at " $DST >> $LOG
        echo "Hardlinking from " $PREV >> $LOG
        echo "================================================" >> $LOG
         
        #=====================================================
        # rsync aufrufen und bei Fehler neu starten
        # die Sicherung wird hier erstmal in ein temporäres
        # Verzeichnis geschrieben
        #=====================================================
        while ! \
        rsync -av --link-dest=$PREV $SRC $BUS >> $LOG 2>&1
        do
        sleep 60
        done
         
        #=====================================================
        # Sicherungsverzechnis in endgültigen Namen umbenennen
        # und mit touch auf die aktuelle Uhrzeit setzen
        #=====================================================
        mv $BUS $DST
        touch $DST
         
        #=====================================================
        # Ende der Logdate erzeugen
        #=====================================================
        CURRENTTIME=`date -u`
        echo "================================================" >> $LOG
        echo "Finished at " $CURRENTTIME >> $LOG
        echo "================================================" >> $LOG
         
        #=====================================================
        # Logdate HTML umsetzen, damit man sie leichter in
        # einem Browser lesen kann.
        #=====================================================
        awk '
        BEGIN {
        print "<!DOCTYPE html>"
        print "<html>"
        print " <head>"
        print " <meta charset="UTF-8">"
        print " <title>TimAchine Backup Log</title>"
        print " </head>"
        print " <body>"
        }
        {
        print " "$0"<br>"
        }
        END{
        print " </body>"
        print "</html>"
        }' $LOG > $HTMLLOG
         
        #=====================================================
        # originale Logdate komprimieren, um Platz zu sparen
        #=====================================================
        gzip -9 $LOG

Ich möchte mein /home/axel regelmäßig auf eine USB HDD sichern.

Code: Alles auswählen

        #  SRC = Hostname und Freigabename der Quelle
        SRC=quellrechner::pub
         
        #  DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden
        DSTDIR=/volume1/backup
         
        #  HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden
        HTMLLOGDIR=/volume1/RSyncLog
         
Was und wie genau habe ich das Script anzupassen?
Kann mir jemand ein Beispiel geben?
Die Bezeichnungen auf dem Script sind mir nicht geläufig, ich habe zur Zeit keinen Plan davon.

@MSfree
Ist das Script von dir entwickelt?
Hast Du evtl. einen Tree / Pfade einer Sicherungfestplatte für mich, mich interssieren die Ablagepfade
und Bezeichnungen?

Welche Rechte muss die USB HDD mit dem Dateiformate ext4 haben?
Was empfiehlt sich da?
Jeder soll Zugriff haben?

Danke

VG
AxelMD
Zuletzt geändert von AxelMD am 18.01.2022 19:39:33, insgesamt 14-mal geändert.

Benutzeravatar
MSfree
Beiträge: 8679
Registriert: 25.09.2007 19:59:30

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 14.01.2022 10:35:15

AxelMD hat geschrieben: ↑ zum Beitrag ↑
14.01.2022 10:17:28
Ich möchte mein /home/axel regelmäßig auf eine USB HDD sichern.

Code: Alles auswählen

        #  SRC = Hostname und Freigabename der Quelle
        SRC=quellrechner::pub
         
        #  DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden
        DSTDIR=/volume1/backup
         
        #  HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden
        HTMLLOGDIR=/volume1/RSyncLog
         
Was und wie genau habe ich das Script anzupassen?
SRC ist die Datenquelle, in deinem Fall also das Verzeichnis /home/axel
DSTDIR ist das Zielverzeichnis, wo rsync seine Sicherung anlegen soll. In deinem Fall also der Mountpunkt, an dem deine USB-Platte gemountet ist. Wie der bei dir genau heißt, kann ich natürlich nicht wissen, typischerweise werden USB-Geräte aber unter /media/Benutzername/UUID gemountet.
HTMLLOGDIR ist das Verzechnis auf der USB-Platte, wo die Logs des rsync-Laufs im HTML-Format abgelegt werden.

Ich würde auf der USB-Platte zwei Verzeichniss anlegen:

Code: Alles auswählen

mkdir /media/Benutzername/UUID/backup
und

Code: Alles auswählen

mkdir /media/Benutzername/UUID/Logs
Dann ergeben sich die Einträge für SRC, DSTDIR und HTMLLOGDIR wie folgt:

Code: Alles auswählen

SRC=/home/axel
DSTDIR=/media/Benutzername/UUID/backup
HTMLLOGDIR=/media/Benutzername/UUID/Logs
Wie gesagt, wo das USB-Laufwerk gemountet ist, mußt du selbst für deine Kiste herausfinden und dann /media/Benutzername/UUID entsprechend ersetzen.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 14.01.2022 10:41:59

Einen KDE Desktop und automount mit Dolphin verwende ich.

USB-HDD_1
/media/axel/usbhdd1/

USB-HDD_2
/media/axel/usbhdd2/

So sieht es bei mir zur Zeit aus.

Oder muss ich mich schon jetzt mit den UUID's weiter beschäftigen?

von @MSfree
Nein, das würde auch keinen Sinn ergeben. Umgekehrt, Du mußt udev beibringen, das Skript aufzurufen.
Macht es Sinn sich später mit dem Gedanken um eine Ausführung von dem Script sich mit udev zu beschäftigen?
Oder verkompliziert das nur und ich sollte darauf verzichten?
MSfree nutzt zur Zeit keine udev Funktionen.

Benutzeravatar
MSfree
Beiträge: 8679
Registriert: 25.09.2007 19:59:30

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 14.01.2022 11:33:48

AxelMD hat geschrieben: ↑ zum Beitrag ↑
14.01.2022 10:41:59
Einen KDE Desktop und automount mit Dolphin verwende ich.

USB-HDD_1
/media/axel/usbhdd1/

USB-HDD_2
/media/axel/usbhdd2/

Oder muss ich mich schon jetzt mit den UUID's weiter beschäftigen?
Nein, mit den UUIDs brauchst du dich erstmal nicht beschätigen. Ich denke, daß das auch von der Desktopumgebung abhängt, unter welchem Namen die USB-Platten eingehängt werden. Nicht umsonst hatte ich oben "typischerweise" geschrieben.

DSTDIR ist dann entweder /media/axel/usbhdd1/backup oder /media/axel/usbhdd2/backup, je nachdem, auf welcher Platte dein Backup landen soll.
Macht es Sinn sich später mit dem Gedanken um eine Ausführung von dem Script sich mit udev zu beschäftigen?
Wenn du es später automatisieren willst, ist das durchaus sinnvoll. Im ersten Schritt würde ich erstmal das Backup ansich zum Laufen bringen, auch wenn es erstmal noch von Hand angestossen wird.
MSfree nutzt zur Zeit keine udev Funktionen.
Richtig. Mein Hardwareausstattung ist auch ein wenig anders. Ich habe einen Fileserver, den meine Clients per NFS einbinden. Dieser Fileserver wird auf einen eigenen Rechner mit ausreichender Plattenkapazität gesichert. Die beiden Rechner laufen 24/7 und die Sicherung findet bei mit über cron gesteuert statt, wobei genau das von dir gezeigte Skript durch cron aufgerufen wird. Als Besonderheit sei noch darauf verwiesen, daß mein Fileserver das Backup nicht auf den Backuprechner schiebt sondern, daß ich umgekehrt verfahre. Mein Backupsystem holt sich die Daten vom Fileserver. Das hat den wesentlichen Vorteil, daß der Backuprechner keine Netzwerkfreigaben nach aussen anbieten muß und Schadsoftware es wesentlich schwerer hat, von aussen den Backuprechner zu infizieren.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 14.01.2022 16:58:50

Wie bekomme ich das Script in einem einfachen *.txt geladen?

Mein Versuche beim Download haben vor den Zeilen immer mehrere Leerzeichen.
Das habe ich jetzt, Quellcode markieren, dann copy und paste.

Fehlermeldung:

Code: Alles auswählen

ls: Zugriff auf '/media/axel/usbhdd1/backup/daily-*' nicht möglich: Datei oder Verzeichnis nicht gefunden
Ich habe nur die Order:
backup
Logs

Was fehlt mir noch?

Mal mit --force versuchen.

Code: Alles auswählen

sh ./rsync-msfree.sh --force
Die Dateien sind jetzt usbhdd1 .

Wie kommt das, dass das Backup fast sofort aus der ubshhd1 ist?
Keinerlei Mitteilungen habe ich halten außer der Abfrage:

Code: Alles auswählen

gzip: /media/axel/usbhdd1/backup/log/log-14.01.22.log.gz already exists; do you wish to overwrite (y or n)? y
Ist da irgendwo etwas im Cache gespeichert?
Es sind 8 GB Daten, oder sind das auf der usbhdd1 nur Symlinks?
Wie kann das so fix gehen?

Im log-14.01.22.html als txt:

Code: Alles auswählen

================================================
Started at Fr 14. Jan 16:20:20 UTC 2022
================================================
Fetching from /home/axel
Storing at /media/axel/usbhdd1/backup/daily-14.01.22
Hardlinking from /media/axel/usbhdd1/backup/daily-14.01.22
================================================
sending incremental file list
created directory /media/axel/usbhdd1/backup/.running-14.01.22
axel/.mozilla/firefox/gjpm95rb.default-release/sessionstore-backups/
axel/.mozilla/firefox/gjpm95rb.default-release/sessionstore-backups/recovery.baklz4
axel/.mozilla/firefox/gjpm95rb.default-release/sessionstore-backups/recovery.jsonlz4
axel/.mozilla/firefox/gjpm95rb.default-release/storage/default/moz-extension+++560d03ec-daba-4bd3-8c44-00f42245a256^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite
axel/.mozilla/firefox/gjpm95rb.default-release/storage/default/moz-extension+++560d03ec-daba-4bd3-8c44-00f42245a256^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal

sent 5,187,319 bytes received 5,771 bytes 3,462,060.00 bytes/sec
total size is 7,650,933,906 speedup is 1,473.29
================================================
Finished at Fr 14. Jan 16:20:21 UTC 2022
================================================ 
Mein angepasstes Sript:

Code: Alles auswählen

#/bin/bash
#=====================================================
# anpassen:
#=====================================================
#  SRC = Hostname und Freigabename der Quelle
SRC=/home/axel
 
#  DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden
DSTDIR=/media/axel/usbhdd1/backup
 
#  HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden
HTMLLOGDIR=/media/axel/usbhdd1/Logs
 
#  PREFIX: "Vorsilbe", die den täglichen Unterverzeichnisnamen vorgehängt wird
PREFIX=daily
 
#=====================================================
# automatische Variablen, keine Anpssung nötig
#=====================================================
# aktuelles Datum
DATE=`date +%d.%m.%y`
# Zielverzeichnis
DST=$DSTDIR/$PREFIX-$DATE
# temporäres Verzeichnis
BUS=$DSTDIR/.running-$DATE
# Logdateiname
LOG=$DSTDIR/log/log-$DATE.log
# HTML-Logdatei
HTMLLOG=$HTMLLOGDIR/log-$DATE.html
# gestriges Verzeichnis
PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1`
 
#=====================================================
# anlegen der Ausgabeverzeichnisse
#=====================================================
if test ! -d $DSTDIR
then
mkdir $DSTDIR
fi
 
if test ! -d $DSTDIR/log
then
mkdir $DSTDIR/log
fi
 
#=====================================================
# Kopf der Logdate erzeugen
#=====================================================
CURRENTTIME=`date -u`
echo "================================================" > $LOG
echo "Started at " $CURRENTTIME >> $LOG
echo "================================================" >> $LOG
echo "Fetching from " $SRC >> $LOG
echo "Storing at " $DST >> $LOG
echo "Hardlinking from " $PREV >> $LOG
echo "================================================" >> $LOG
 
#=====================================================
# rsync aufrufen und bei Fehler neu starten
# die Sicherung wird hier erstmal in ein temporäres
# Verzeichnis geschrieben
#=====================================================
while ! \
rsync -av --link-dest=$PREV $SRC $BUS >> $LOG 2>&1
do
sleep 60
done
 
#=====================================================
# Sicherungsverzechnis in endgültigen Namen umbenennen
# und mit touch auf die aktuelle Uhrzeit setzen
#=====================================================
mv $BUS $DST
touch $DST
 
#=====================================================
# Ende der Logdate erzeugen
#=====================================================
CURRENTTIME=`date -u`
echo "================================================" >> $LOG
echo "Finished at " $CURRENTTIME >> $LOG
echo "================================================" >> $LOG
 
#=====================================================
# Logdate HTML umsetzen, damit man sie leichter in
# einem Browser lesen kann.
#=====================================================
awk '
BEGIN {
print "<!DOCTYPE html>"
print "<html>"
print " <head>"
print " <meta charset="UTF-8">"
print " <title>TimAchine Backup Log</title>"
print " </head>"
print " <body>"
}
{
print " "$0"<br>"
}
END{
print " </body>"
print "</html>"
}' $LOG > $HTMLLOG
 
#=====================================================
# originale Logdate komprimieren, um Platz zu sparen
#=====================================================
gzip -9 $LOG 

schwedenmann
Beiträge: 5253
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von schwedenmann » 14.01.2022 17:46:59

Hallo

st da irgendwo etwas im Cache gespeichert?
Es sind 8 GB Daten, oder sind das auf der usbhdd1 nur Symlinks?
Wie kann das so fix gehen?
Liegt wohl daran:
Fetching from /home/axel
Storing at /media/axel/usbhdd1/backup/daily-14.01.22
Hardlinking from /media/axel/usbhdd1/backup/daily-14.01.22
================================================
sending incremental file list
mfg
schwedenmann

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 14.01.2022 17:48:35

Was bedeutet das übersetzt für einen noob?

Dann stimmt doch irgendwas mit meinem Script nicht.



#######################################
Das folgende Script funktioniert.

rsync-min.sh

Code: Alles auswählen

#!/bin/sh

quelle=/home/axel/
ziel=/media/axel/usbhdd1/
heute=$(date +%Y-%m-%d)

rsync -avR --delete "${quelle}"  "${ziel}${heute}/" --link-dest="${ziel}last/"
ln -nsf "${ziel}${heute}" "${ziel}last"

exit 0 
Zuletzt geändert von AxelMD am 15.01.2022 14:08:02, insgesamt 3-mal geändert.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 10:02:30

Script 16.01.2022

Code: Alles auswählen

#/bin/bash
#=====================================================
# anpassen:
#=====================================================
#  SRC = Hostname und Freigabename der Quelle
SRC=/home/axel
 
#  DSTDIR = Vereichnis, unter dem die Backups auf dem Ziel angelegt werden
DSTDIR=/media/axel/usbhdd1/backup
 
#  HTMLLOGDIR = Vereichnis, unter dem die Logs auf dem Ziel angelegt werden
HTMLLOGDIR=/media/axel/usbhdd1/Logs
 
#  PREFIX: "Vorsilbe", die den täglichen Unterverzeichnisnamen vorgehängt wird
PREFIX=daily
 
#=====================================================
# automatische Variablen, keine Anpssung nötig
#=====================================================
# aktuelles Datum
DATE=`date +%d.%m.%y`
# Zielverzeichnis
DST=$DSTDIR/$PREFIX-$DATE
# temporäres Verzeichnis
BUS=$DSTDIR/.running-$DATE
# Logdateiname
LOG=$DSTDIR/log/log-$DATE.log
# HTML-Logdatei
HTMLLOG=$HTMLLOGDIR/log-$DATE.html
# gestriges Verzeichnis
PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1`
 
#=====================================================
# anlegen der Ausgabeverzeichnisse
#=====================================================
if test ! -d $DSTDIR
then
mkdir $DSTDIR
fi
 
if test ! -d $DSTDIR/log
then
mkdir $DSTDIR/log
fi
 
#=====================================================
# Kopf der Logdate erzeugen
#=====================================================
CURRENTTIME=`date -u`
echo "================================================" > $LOG
echo "Started at " $CURRENTTIME >> $LOG
echo "================================================" >> $LOG
echo "Fetching from " $SRC >> $LOG
echo "Storing at " $DST >> $LOG
echo "Hardlinking from " $PREV >> $LOG
echo "================================================" >> $LOG
 
#=====================================================
# rsync aufrufen und bei Fehler neu starten
# die Sicherung wird hier erstmal in ein temporäres
# Verzeichnis geschrieben
#=====================================================
while ! \
rsync -av --link-dest=$PREV $SRC $BUS >> $LOG 2>&1
do
sleep 60
done
 
#=====================================================
# Sicherungsverzechnis in endgültigen Namen umbenennen
# und mit touch auf die aktuelle Uhrzeit setzen
#=====================================================
mv $BUS $DST
touch $DST
 
#=====================================================
# Ende der Logdate erzeugen
#=====================================================
CURRENTTIME=`date -u`
echo "================================================" >> $LOG
echo "Finished at " $CURRENTTIME >> $LOG
echo "================================================" >> $LOG
 
#=====================================================
# Logdate HTML umsetzen, damit man sie leichter in
# einem Browser lesen kann.
#=====================================================
awk '
BEGIN {
print "<!DOCTYPE html>"
print "<html>"
print " <head>"
print " <meta charset="UTF-8">"
print " <title>TimAchine Backup Log</title>"
print " </head>"
print " <body>"
}
{
print " "$0"<br>"
}
END{
print " </body>"
print "</html>"
}' $LOG > $HTMLLOG
 
#=====================================================
# originale Logdate komprimieren, um Platz zu sparen
#=====================================================
gzip -9 $LOG 

- die usbhdd1 habe neu ext4 formatiert
- sudo chmod a+rwx /media/axel/usbhdd1/
- Verzeichnissse "backup" und "Logs" angelegt
- sh ./rsync-msfree.sh

Code: Alles auswählen

sh ./rsync-msfree.sh
ls: Zugriff auf '/media/axel/usbhdd1/backup/daily-*' nicht möglich: Datei oder Verzeichnis nicht gefunden
^C
Liegt der Fehler bei mir oder an dem Script von MSfree?
Was läuft falsch?
Warum ist fehlt bei Beispiel "DSTDIR=/media/axel/usbhdd1/backup" ein "/" am Ende der Zeile?

Benutzeravatar
Tintom
Moderator
Beiträge: 2798
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von Tintom » 15.01.2022 10:22:10

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:02:30
Was läuft faslch?
Vermutlich liegt's daran:
# gestriges Verzeichnis
PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1`

Sofern du das Skript zum ersten mal auf einem neuen (formatierten !) Medium ausführst, gibt es kein Verzeichnis vom Vortag. Das führt dann zu dem beschriebenen Fehler. Taucht die Fehlermeldung beim zweiten Durchlauf wieder auf?
Warum ist fehlt bei Beispiel "DSTDIR=/media/axel/usbhdd1/backup" ein "/" am Ende der Zeile?
Das ist der „Klassiker“ von rsync. Schau mal in die Manpage.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 10:34:56

https://linux.die.net/man/1/rsync

Wo ist da die Frage nach "/" beantwortet?

Mit Klassiker kann ich wenig anfangen, ich bin new age.

Code: Alles auswählen

sh ./rsync-msfree.sh --force
Damit funktioniert es, wenn 2 mal ausgeführt, warum ist "--force" erforderlich?
Zuletzt geändert von AxelMD am 15.01.2022 10:37:17, insgesamt 1-mal geändert.

Benutzeravatar
Tintom
Moderator
Beiträge: 2798
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von Tintom » 15.01.2022 10:35:45

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:34:56
Wo ist da die Frage nach "/" beantwortet?
Abschnitt „Usage“.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 10:40:35

Warum ist das ein Klassiker?
So richtig konnte ich mir die Frage nach "/" noch nicht beantworten.

Benutzeravatar
Tintom
Moderator
Beiträge: 2798
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von Tintom » 15.01.2022 10:42:05

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:34:56
Damit funktioniert es, wenn 2 mal ausgeführt, warum ist "--force" erforderlich?
Gar nicht. Das Skript wertet --force nicht aus. Du kannst den Schalter weglassen. Es funktioniert ab dem zweiten Durchlauf, weil am Ende des ersten Durchlaufs das entsprechende Verzeichnis angelegt wird (Befehl mv ...) und deshalb bei Beginn des zweiten Durchlaufs die Variable $PREV korrekt gesetzt wird.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 10:42:46

Warum ist das ein Klassiker?
So richtig konnte ich mir die Frage nach "/" noch nicht beantworten.

Antwort: Es ist ein Klassiker weil, .............., das kannst Du unter usage https://linux.die.net/man/1/rsync nachlesen.

Das hält Threads kurz.

Ich habe von rsync bis jetzt keine Ahnung.
Das Skript wertet --force nicht aus.
Dann habe ich also unwissentlich, durch den zweiten Aufruf von dem Script das Problem gelöst und nicht durch "--force".

Anleitung für rsync-msfree.sh, merke dir das AxelMD:
Beim der ersten Nutzung muss das Script 2 mal aufgerufen werden.


Wie muss ich das Script abändern, damit ich sagen wir jede Minute einen Test ausführen kann?
Zuletzt geändert von AxelMD am 15.01.2022 15:11:56, insgesamt 2-mal geändert.

Benutzeravatar
Tintom
Moderator
Beiträge: 2798
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von Tintom » 15.01.2022 11:06:02

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:42:46
Antwort: Es ist ein Klassiker weil, .............., das kannst Du unter usage https://linux.die.net/man/1/rsync nachlesen.

Das hält Threads kurz.
Dein Humor gefällt mir :wink:
AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:42:46
Wie muss ich das Script abändern, damit ich sagen wir jede Minute einen Test ausführen kann?
Einen Test worauf? Was willst du testen?
AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:42:46
So richtig konnte ich mir die Frage nach "/" noch nicht beantworten.
Es sind die Beispiele 2+3 der Manpage, die ich meinte. Ich kann sie leider nicht treffender wiedergeben, weil ich das Beispiel dort für sehr gelungen halte und im Netz keine bessere Übersetzung/Beispiel dazu finde.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 11:13:55

Einen Test worauf? Was willst du testen?
Ich möchte jetzt Übungen machen, bis jetzt ändere ich immer händisch das Datum des vorherigen Tests.

Code: Alles auswählen

# aktuelles Datum
DATE=`date +%d.%m.%y`
Vermutlich muss dieser Abschnitt durch hinzufügen von Stunde, Minute, Sekunde.

Wie sieht das aus, wenn ich jede Minute die Möglichkeit haben möchte ein Backup durchführen zu können?

https://phoenixnap.com/kb/linux-date-command

Code: Alles auswählen

# aktuelles Datum
DATE=`date +%d.%m.%y,%H,%M`
Füge ich ",%H,%M`" hinzu, kann ich jede Minute ein Backup machen.


MSfree
Ich würde auf der USB-Platte zwei Verzeichniss anlegen:

Code: Alles auswählen

mkdir /media/Benutzername/UUID/backup

und

Code: Alles auswählen

mkdir /media/Benutzername/UUID/Logs
Warum hat MSfree mir diese Hinweise gegeben, das Script scheint die Verzeichnisss automatisch anzulegen?
Oder irre ich, weil bei mir noch irgendwas im Cache oder sonstwo gespeichert war?

Warum ist rsync so superschnell, wenn ich das rsync-msfree.sh ausführe?
Die ca. 8 GB sind in fast Realtime auf der usbhdd1?
Die usbhdd1 scheint sich auch nicht zu füllen, es bleibt bei 2% Belegung, bei jetzt 6 Datensicherungen.
Wie macht rsync das?
Zuletzt geändert von AxelMD am 15.01.2022 12:02:26, insgesamt 2-mal geändert.

Benutzeravatar
Tintom
Moderator
Beiträge: 2798
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von Tintom » 15.01.2022 11:52:21

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 11:13:55
Warum ist rsync so superschnell, wenn ich das rsync-msfree.sh ausführe?
Die ca. 8 GB sind in fast Realtime auf der usbhh1?
Ganz einfach - es werden keine 8 GB an Daten übertragen, sondern nur die Daten, die sich seit dem letzten Aufruf verändert haben (genauer: die sich im Vergleich zu --link-dest verändert haben). Führst du das Skript nun jede Sekunde aus ändern sich nur wenig Daten, dementsprechend schnell läuft der Befehl durch.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 11:58:27

Nicht ganz richtig, jede 1 Minute kann ich das Script ausführen.

Code: Alles auswählen

# aktuelles Datum
DATE=`date +%d.%m.%y,%H,%M`
Es fehlt "%S" – Second (00-60).

Warum kann ich z. B. die ersten 3 Backup's löschen und die Daten sind trotzdem nicht verloren?
Festplattenbelegung bleibt bei 2%.

Welche Strategie muss ich angehen, um die usbhdd1 Belegung möglichst klein zu halten?
Löschen bringt ja irgendwie nichts.

Später möchte ich, sagen wir 10 Backupsvorhalten, bei Nr. 11 wird Nr. 1 gelöscht und
Nr. 11 wird namentlich Nr. 10 (Daten von Nr. 11).
Zuletzt geändert von AxelMD am 15.01.2022 12:07:46, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 8679
Registriert: 25.09.2007 19:59:30

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 15.01.2022 12:07:23

Tintom hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 10:22:10
Vermutlich liegt's daran:
# gestriges Verzeichnis
PREV=`ls -rtd $DSTDIR/$PREFIX-* | tail -1`

Sofern du das Skript zum ersten mal auf einem neuen (formatierten !) Medium ausführst, gibt es kein Verzeichnis vom Vortag. Das führt dann zu dem beschriebenen Fehler.
Ja, das ist wohl ein Fehler an dem Skript, daß beim ersten Aufruf kein Urbackup angelegt wird. Das könnte man natürlich boch einbauen, ein zweiter Aufruf tut es aber auch. Das Skript ist ja auch schon ein paar Jahre alt und ganz genau erinnere ich mich auch nicht mehr an die Entstehung. Vermutlich habe ich damals bei mir das Urbackup per cp oder rsync über die Kommandozeile angelegt, so daß bei mir immer ein Urbackup vorhanden war und dieser Mißstand bei mir nie aufgetreten ist.
AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 11:13:55
Ich möchte jetzt Übungen machen, bis jetzt ändere ich immer händisch das Datum des vorherigen Tests.

Code: Alles auswählen

# aktuelles Datum
DATE=`date +%d.%m.%y`
Vermutlich muss dieser Abschnitt durch hinzufügen von Stunde, Minute, Sekunde.
Ja, das könntest du tun.

Code: Alles auswählen

man date
beschreibt die Datumsformatierung. Mit

Code: Alles auswählen

DATE=`date +%d.%m.%y_%k:%M`
würde am Datum noch die Uhrzeit als _hh:mm angehängt. Für Sekunden könnte man noch %S anhängen.

Benutzeravatar
Tintom
Moderator
Beiträge: 2798
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von Tintom » 15.01.2022 12:08:12

@Axel: Es ist im Allgemeinen sehr schwierig auf deine Beiträge zu antworten, wenn du diese minütlich editierst :wink:

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 12:10:41

Stimmt wohl, wenn mir etwas einfällt, ich es gelöst habe antworte ich mir selbst.

@MSfree
Ja, das ist wohl ein Fehler an dem Skript, daß beim ersten Aufruf kein Urbackup angelegt wird.
Evtl. ein Hinweis im Script für die erste Ausführung, die 2 mal erfolgen muss.

Welche Vorteile hat rdiff-backup, irgendwie empfinde ich es jetzt, mit dem MSfree Script als überflüssig? Es ist erheblich langsamer in meinem Fall, an Daten von vor x Tagen ist es erheblich schwieriger ran zu kommen.

Ist rdiff-backup oder rsync fehleranfälliger?

Benutzeravatar
MSfree
Beiträge: 8679
Registriert: 25.09.2007 19:59:30

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 15.01.2022 12:26:04

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 11:58:27
Später möchte ich, sagen wir 10 Backupsvorhalten, bei Nr. 11 wird Nr. 1 gelöscht und Nr. 11 wird namentlich Nr. 10 (Daten von Nr. 11).
Man könnte natürlich die alten Backups löschen, aber warum?

Die per --link-dest angelegten Backups brauchen kaum Platz. Wenn du deinen momentanen Datenbestand von ca. 8GB damit täglich sicherst, werden nach 1000 Backups auf keinen Fall 8TiB Platz benötigt. Meiner Schätzung nach werden deutlich weniger als 500GB dafür benötigt.

Ich würde erstmal nichts löschen und die Platzentwicklung beobachten. Bei mir belegen zum Beispiel die letzten 885 Tagesbackups insgesamt rund 18TB, inklusive des Urbackups von etwa 2TB Größe. Täglich kommen bei mir also rund 18GB dazu, also weniger als 1% des Bestands.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 12:30:15

Du hast ja recht, löschen ist nicht zwingend erforderlich, das war mir zuvor nicht klar.
Welche Vorteile hat rdiff-backup, irgendwie empfinde ich es jetzt, mit dem MSfree Script als überflüssig? Es ist erheblich langsamer in meinem Fall, an Daten von vor x Tagen ist es erheblich schwieriger ran zu kommen.

Ist rdiff-backup oder rsync fehleranfälliger?

Benutzeravatar
MSfree
Beiträge: 8679
Registriert: 25.09.2007 19:59:30

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 15.01.2022 12:40:28

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 12:10:41
Evtl. ein Hinweis im Script für die erste Ausführung, die 2 mal erfolgen muss.
Ich habe ja schon geschrieben, daß man das auch sauber lösen kann, ohne das Skript zweimal aufzurufen. Man könnte z.B. testen, ob $PREV leer ist und dann rsync ohne --link-dest aufrufen.
Welche Vorteile hat rdiff-backup
Es hat nicht den Fehler mit dem Erstbackup. Ansonsten tut es das gleiche wie mein Skript.
Ist rdiff-backup oder rsync fehleranfälliger?
Das macht kaum einen Unterschied. Fehleranfällig sind eigentlich beide Programme nicht. Gegen Stromausfälle, Netzwerkabbrüche oder Wackelkontakte im USB-Kabel sind beide gleich machtlos.

Ich begegne dem, in dem ich rsync in der while-Schleife laufen lasse, so daß ein Abbruch zum Wiederaufsetzen des letzten Vorgangs führt. Gegen Stromausfall oder gammelige USB-Kabel nützt das aber auch nicht.

AxelMD
Beiträge: 1153
Registriert: 15.03.2009 08:02:11

Re: rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 15.01.2022 12:44:05

Es hat nicht den Fehler mit dem Erstbackup. Ansonsten tut es das gleiche wie mein Skript.
Wieso ist deine Lösung so viel schneller?

Vorteil ist bei deiner Scriptlösung ist, ich kann sofort auf einen alten Bestand zurückgreifen.
Bei rdiff-backup muss ich in der Konsole basteln, von einem zum anderen mal Gebrauch vergesse ich immer wieder alles.

Würdest Du das Script, den Fehler beseitigen "offiziell MSfree" ändern und hier, da wo das alte liegt einstellen?
Zuletzt geändert von AxelMD am 15.01.2022 13:18:50, insgesamt 1-mal geändert.

Antworten