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

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
AxelMD
Beiträge: 880
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: 2595
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: 880
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: 7944
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: 2595
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: 880
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: 7944
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: 880
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: 7944
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: 880
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.

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

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

Beitrag von MSfree » 15.01.2022 13:11:09

AxelMD hat geschrieben: ↑ zum Beitrag ↑
15.01.2022 12:44:05
Wieso ist deine Lösung so viel schneller?
Das kann ich dir nicht beantworten. Ich habe rdiff-backup nie grundlegend getestet, daß mir da etwas aufgefallen wäre. Für mich hat rsync einfach so viele Vorteil, daß ich dabei hängen geblieben bin. Backups auf Dateisystemebene sind für mich ein unschlagbares Argument. Ich wollte nichts, das Backups in (proprietären) Archivdateien (z.B. ZIP) ablegt, wer weiß, ob ich in Zukunft ZIP noch lesen darf/kann. Ich habe auch Dateien zu sichern, die größer als 4GiB sind, was einige Backupprogramme nicht können...
Vorteil ist bei deiner Scriptlösung ist, ich kann sofort auf eine alten Bestand zurückgreifen.
Das habe ich mir bei Apples TimeMachine abgeschaut. :wink:
Würdest Du das Script, den Fehler beseitigen "offiziell MSfree" ändern und hier, da wo das alte liegt einstellen?
Ich habe keine Berechtigung, an den Dateien, die unter NoPaste eingelagert sind, Änderungen vorzunehmen. Der Zustand wird also bis in alle Ewigkeit hier im Forum stehen bleiben. Ich kann aber eine geänderte Version erneut nach NoPaste hochladen. Gib mir aber ein wenig Zeit, zumidest ein paar grobe Tests sollte ich da schon machen.

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

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

Beitrag von AxelMD » 15.01.2022 13:19:54

Super, danke, evtl. das Releasedate noch im Script aufnehmen.

Macht die Änderung wirklich Sinn, verkompliziert es, wird das Script nicht zu ausgefeilt, zu kompliziert?

rdiff-backup sichert auch auf Dateiebene.

Code: Alles auswählen

rdiff-backup /home/axel/ /media/axel/usbhdd1/axel/
Das dauert eeeeeeeeeeeeeeewiiiiiiiiiiiiiggggggggggg.


bis dahin -------------------> viewtopic.php?t=183277

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

Re: [in Wartestellung] rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 15.01.2022 21:45:59

Das Problem mit dem Urbackup sollte behoben sein.

Code: Alles auswählen

#/bin/bash
#=====================================================
# customize SRC, DSTDIR, PREFIX:
#
SRC=hostname::share
DSTDIR=/volume1/backup
HTMLLOGDIR=/volume1/RSyncLog
PREFIX=daily
#=====================================================
DATE=`date +%d.%m.%y`
DST=$DSTDIR/$PREFIX-$DATE
BUS=$DSTDIR/.running-$DATE
LOG=$DSTDIR/log/log-$DATE.log
HTMLLOG=$HTMLLOGDIR/log-$DATE.html
PREV=`ls -rtd $DSTDIR/$PREFIX-* 2> /dev/null | tail -1`
#=====================================================
if test -z "$PREV"
then
  HARDLINK=""
else
  HARDLINK=--link-dest=$PREV
fi

if test ! -d $DSTDIR
then
  mkdir $DSTDIR
fi

if test ! -d $DSTDIR/log
then
  mkdir $DSTDIR/log
fi

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

while ! \
  rsync -av $HARDLINK $SRC $BUS >> $LOG  2>&1
do
  sleep 60
done

mv $BUS $DST
touch $DST

CURRENTTIME=`date -u`
echo "================================================" >> $LOG
echo "Finished at      " $CURRENTTIME                   >> $LOG
echo "================================================" >> $LOG

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

gzip -9 $LOG

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

Re: [new test] rsync Backup von /home/user - Script von MSfree

Beitrag von AxelMD » 16.01.2022 09:39:55

*wow, einige Tage sind bei dir schnell.
Danke

Erster Test bei mir leider mit Fehler

Code: Alles auswählen

sh ./rsync-msfree-2.sh
./rsync-msfree-2.sh: 77: Nach: not found
Warum hast Du das erste Script nicht komplett als Basis genommen?
Du hast jetzt andere Pfadbezeichnungen (RSyncLog) gewählt, warum das?

Code: Alles auswählen

sh ./rsync-msfree-2.sh
mv: das Verschieben von '/media/axel/usbhdd1/backup/.running-16.01.22' nach '/media/axel/usbhdd1/backup/daily-16.01.22/.running-16.01.22' ist nicht möglich: Das Verzeichnis ist nicht leer
./rsync-msfree-2.sh: 57: cannot create /media/axel/usbhdd1/RSyncLog/log-16.01.22.html: Directory nonexistent
gzip: /media/axel/usbhdd1/backup/log/log-16.01.22.log.gz already exists; do you wish to overwrite (y or n)? y
./rsync-msfree-2.sh: 77: Nach: not found
Meine Anpassungen vom neuen Script:

Code: Alles auswählen

#/bin/bash
#=====================================================
# customize SRC, DSTDIR, PREFIX:
#
SRC=/home/axel
DSTDIR=/media/axel/usbhdd1/backup
HTMLLOGDIR=/media/axel/usbhdd1/RSyncLog
PREFIX=daily
#=====================================================
Was ist da falsch?
Wie müßte ich das erste funkionierende Script anpassen, damit die Neuheiten berücksichtigt werden?
Ein Anzeige, was gerade bearbeitet wird bekomme ich nicht, das trotz dem rsnyc -av Schalter.
v steht für verbose.

Das erste Script funktioniert.

Mache ich etwas falsch oder liegt es am neuen Script?
Mit dem neuen Script bin ich überfordert, ich finde nicht mal die Änderungen.
Die Kommentare, wie beim ersten Script fehlen mir auch.

Frage:

Code: Alles auswählen

rsync -av --link-dest
Was genau macht die die Option "--link-dest"?
--link-dest=DIR hardlink to files in DIR when unchanged
rsync man, das sagt mir aber nichts.

@MSfree
Hattest Du damals das Script selbst entwickelt oder woher hattest Du die Basis?
Gibt es irgend ein Standardscript für rsync und ein Vorhaben?
Eine was mehr genutzt wird, mehr Anwender, die sich damit auskennen.
So wie es scheint hast nur Du davon einen Plan.

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

Re: [new test] rsync Backup von /home/user - Script von MSfree

Beitrag von MSfree » 16.01.2022 14:14:34

AxelMD hat geschrieben: ↑ zum Beitrag ↑
16.01.2022 09:39:55
Warum hast Du das erste Script nicht komplett als Basis genommen?
Ich habe das Skript verwendet, das ich bei mir in meiner Versionsverwaltung habe. Das Skript aus NoPaste ist aber funktionell identisch, da sind nur ein paar zusätzlich Kommentare drin.
Du hast jetzt andere Pfadbezeichnungen (RSyncLog) gewählt, warum das?
Wenn du mal auf Zeile 12 von NoPaste-Eintrag41572 schaust und das mit dem von mir oben vergleichst, wirst du sehen, daß die Zeilen identisch sind.

Die Variablen SRC, DSTDIR, HTMLLOGDIR und PREFIX mußt du aber auf deine Bedürfnisse anpassen.

Code: Alles auswählen

mv: das Verschieben von '/media/axel/usbhdd1/backup/.running-16.01.22' nach '/media/axel/usbhdd1/backup/daily-16.01.22/.running-16.01.22' ist nicht möglich: Das Verzeichnis ist nicht leer
Da ist vermutlich beim Copy'n'Paste des Skripts aus dem Forum in deinen Editor ein Unfall passiert.

Code: Alles auswählen

./rsync-msfree-2.sh: 57: cannot create /media/axel/usbhdd1/RSyncLog/log-16.01.22.html: Directory nonexistent
Das Anlegen des Verzeichnisses für die HTML-Logs fehlt noch in dem Skript.

Code: Alles auswählen

gzip: /media/axel/usbhdd1/backup/log/log-16.01.22.log.gz already exists; do you wish to overwrite (y or n)? y
Eigentlich war das Skript dafür gedacht, einmal am Tag zu laufen. Die Datumsvariable, aus der das Backupverzeichnis und die Namen der beiden Logdateien abgleitet werden, ist nicht eindeutig, wenn du das Skript mehrfach am Tag aufrufst. Du kannst der Variable DATE auch ein Datum mit Uhrzeit zuweisen, so daß das Skript auch sekündlich aufgelöste Namen erzeugt. Dann gibt es diese Doppeldeutigkeit nicht mehr.
Was genau macht die die Option "--link-dest"?
Damit wird eine "Kopie" des letzten Backups erzeugt, indem dort alle Dateien der letzten Backups als Hardlinks ins neue Backupverzeichnis übernommen werden. Danach läuft rsync ganz normal auf der "Kopie". Kopie ist hier deshalb in Anführungsstrichen, weil es sich nich um byteweise Dateikopien handelt sondern nur um Dateinamen im Dateibaum, dessen physikalischer Inhalt auf eine bereits vorhandene Datei zeigt.
Hattest Du damals das Script selbst entwickelt oder woher hattest Du die Basis?
Das habe ich selbst geschrieben. Ursprünglich tat das auf einem kleinen Synology NAS seinen Dienst. Die Synologies laufen unter Linux und bringen rsync mit.
Gibt es irgend ein Standardscript für rsync und ein Vorhaben?
rsync hat eine große Menge von Parametern, um so ziemlich alles abzudecken, was man sich als Backup oder Datensynchronisation wünscht. Z.B. kann rsync von Platte zu Platte oder über das Netzwerk erfolgen. Über das Netzwerk kann man das rsync-Protokoll nehmen oder es über SSH tunneln. Folglich kann es so etwas wie einen Standardaufruf gar nicht geben. Natürlich kann man ein Skript schreiben, das das alles unterstützt, es würde aber entsprechend komliziert sein und genauso viele Parameter übernehmen müssen wie rsync selbst.

Ich habe mal die Kommentare aus dem ursprünglichen Skript eingebaut und das Erzeugen des HTMLLogDirs hinzugefügt.
NoPaste-Eintrag40928

Antworten