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

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Benutzeravatar
MSfree
Beiträge: 10752
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: 1378
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: 10752
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: 1378
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: 10752
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

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

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

Beitrag von AxelMD » 16.01.2022 14:18:22

bitten Löschen, ein Versehen, danke
Zuletzt geändert von AxelMD am 16.01.2022 14:24:50, insgesamt 1-mal geändert.

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

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

Beitrag von AxelMD » 16.01.2022 14:20:09

Oh super, danke

Mein heimlicher Favorit ist schon die Lösung

"rsync Backup von /home/user - Script von MSfree".

Flexibel, schnell und mit Basisprogramm, nur etwas schlau sollte man sein.

rsync, die Funktionalitäten sind fast unendlich und in jedem Linuxsystem enthalten.

Das soll sich AxelMD auch merken:

MSfree
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: 1378
Registriert: 15.03.2009 08:02:11

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

Beitrag von AxelMD » 16.01.2022 14:44:55

Fehlermeldung

Code: Alles auswählen

sh ./rsync-msfree-3.sh
ls: Zugriff auf '/media/axel/usbhdd1/backup/daily-*' nicht möglich: Datei oder Verzeichnis nicht gefunden
rsync-msfree-3.sh

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
 
Vor der Scriptausführung hatte ich alles auf usbhdd1 gelöscht.
Die Ordner "backup" und "Logs" habe ich danach manuell auf usbhdd1 angelegt.

Wie bekomme ich debianforum.de pastebin die Dateien sauber auf meinen PC?
Bis jetzt mache ich das mit copy und paste.


Schade, was läuft da falsch?

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

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

Beitrag von AxelMD » 16.01.2022 15:12:20

Das Script funktioniert einwandfrei:

rsync-mini.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 
 

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

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

Beitrag von MSfree » 16.01.2022 17:25:43

AxelMD hat geschrieben: ↑ zum Beitrag ↑
16.01.2022 15:12:20
Das Script funktioniert einwandfrei:
Es funktioniert, aber nicht so, wie du erwartest. Denn das --link-dest erfordert ein bestehendes, vorheriges Backupverzeichnis. Da bei deinem Skript das Verzeichnis ${ziel}last/ nie existiert, passiert hier einfach keine Verlinkung sondern nur eine Komplettsicherung.

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

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

Beitrag von AxelMD » 16.01.2022 17:42:06

AxelMD hat geschrieben: ↑ zum Beitrag ↑
16.01.2022 14:44:55
Fehlermeldung

Code: Alles auswählen

sh ./rsync-msfree-3.sh
ls: Zugriff auf '/media/axel/usbhdd1/backup/daily-*' nicht möglich: Datei oder Verzeichnis nicht gefunden
Wie löse ich das Problem bei deinem Script?
Irgendwie scheine ich bei deinem Script zu "anfängerich".
passiert hier einfach keine Verlinkung sondern nur eine Komplettsicherung.
Das ist natürlich nicht so schön, bei dir gefällt mir das besser, schneller und platzsparender.

Dein Script scheint aber auch ausgefeilter zu sein, hier kennt sich wohl niemand damit so richtig aus.
Es sieht sooooooo einfach aus.

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

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

Beitrag von MSfree » 16.01.2022 17:54:41

AxelMD hat geschrieben: ↑ zum Beitrag ↑
16.01.2022 17:42:06

Code: Alles auswählen

sh ./rsync-msfree-3.sh
ls: Zugriff auf '/media/axel/usbhdd1/backup/daily-*' nicht möglich: Datei oder Verzeichnis nicht gefunden
Wie löse ich das Problem bei deinem Script?
Ich dachte, das hätte ich mit dem lezten Upload behoben, aber irgendwie hat sich da doch noch ein Copy'n'Paste-Fehler eingeschlichen.

Zur Erklärung:
Der ls-Aufruf auf Zeile 31 bringt eine Fehlermeldung, wenn noch kein altes Backup existiert. Die Meldung ist allerdings bedeutungslos, weil die Variable PREV dann trotzdem leer ist. Auf Zeile 54 wird geprüft of PREV leer ist und entscheidet damit ob das Backup mit oder ohne --link-dest gemacht werden soll.

In der Variante NoPaste-Eintrag41573 wird die Fehlermeldung unterdrückt. Beide Versionen laufen aber bis auf die Mledung korrekt durch. Sobald mal ein Backup vom Vortag vorhanden ist, ist auch PREV nicht mehr leer und ls gibt keine Meldung mehr aus.

P.S. ja, den Text von NoPaste kann man wohl nicht runterladen, das muß man per Copy'n'Paste machen.

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

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

Beitrag von AxelMD » 16.01.2022 18:03:49

Darf ich das Script bei https://pastebin.com/ hochladen?
aber irgendwie hat sich da doch noch ein Copy'n'Paste-Fehler eingeschlichen.
Bei dir oder bei mir?

Hat noch keiner dich nach deinem Script befragt?

Bei jetzt 814 Aufrufen dieses Thread's scheint Interesse vorhanden zu sein.
Das Script ist auch voll cool, eine Perle sozusagen.
Feinschliff und Dokumentation ist noch erforderlich.

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

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

Beitrag von MSfree » 16.01.2022 19:32:26

AxelMD hat geschrieben: ↑ zum Beitrag ↑
16.01.2022 18:03:49
Darf ich das Script bei https://pastebin.com/ hochladen?
Ich habe jedenfalls keine Bedenken. Das Skript ist ja ohnehin schon öffentlich.
Bei dir oder bei mir?
Das war mein Fehler.
Hat noch keiner dich nach deinem Script befragt?
Bis jetzt jedenfalls nicht.
Bei jetzt 814 Aufrufen dieses Thread's scheint Interesse vorhanden zu sein.
Solche Zahlen sagen nicht viel aus. Inzwischen sind es ja sogar 839, bei 37 Beiträgen. Einfach gerechnet heißt das, daß hier 839/37 also 21-22 Leute mitlesen, wovon mindestens 15 Stammnutzer dieses Forums sind.

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

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

Beitrag von AxelMD » 17.01.2022 08:53:15

msfree-rsync-4.sh 41573
https://pastebin.com/LpdNRssj

Fehlermeldung:

Code: Alles auswählen

sh ./rsync-4.sh
: not foundh: 7: 
: not foundh: 10: 
: not foundh: 13: 
: not foundh: 16: 
: not foundh: 32: 
./rsync-4.sh: 125: Syntax error: end of file unexpected (expecting "do")
Was ist da falsch?
Warum werden jetzt keine Leerzeilen akzeptiert?
Liegt das an pastebin?
Den Download habe mit "download" bei pastebin getätigt und "txt" beim Speichern gegen "sh" ausgetauscht.

Warum haben die Scripte von MSfree keinen "sync" Befehl enthalten damit im Schreibpuffer des Linux-Kernels befindliche Daten auf den Datenträger geschrieben werden?

Mein Editor für die *.sh ist Kate.

Für AxelMD zum merken:
Mit F11 werden bei Kate die Zeilenummern angezeigt.

Jetzt habe ich copy - paste erneut rsync-4.sh angelegt, das Script funktioniert jetzt.

Das für mich angepaßte Script (von https://pastebin.com/LpdNRssj) sieht wie folgt aus:

Code: Alles auswählen

#/bin/bash
#=====================================================
# customize SRC, DSTDIR, HTMLLOGDIR, PREFIX:
#
#  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-* 2> /dev/null | tail -1`

#=====================================================
# anlegen der Ausgabeverzeichnisse
#=====================================================
if test ! -d $DSTDIR
then
  mkdir $DSTDIR
fi

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

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

#=====================================================
# prüfen, ob rsync mit --link-dest laufen soll
#=====================================================
if test -z "$PREV"
then
  HARDLINK=""
else
  HARDLINK=--link-dest=$PREV
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 $HARDLINK $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 
Wie ist ein empfehlenswertes Vorgehen für die Zukunft?
Gibt es eine Pastedienst wo ich die Datei downloaden und gleich mit arbeiten kann?

Warum haben wir, habe ich 2 mal log?
/media/axel/usbhdd1/backup/log/
und
/media/zxz/usbhdd1/Logs/

Welche Überlegung steckt dahinter?

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

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

Beitrag von MSfree » 17.01.2022 10:35:06

AxelMD hat geschrieben: ↑ zum Beitrag ↑
17.01.2022 08:53:15
Warum haben die Scripte von MSfree keinen "sync" Befehl enthalten damit im Schreibpuffer des Linux-Kernels befindliche Daten auf den Datenträger geschrieben werden?
Weil sync praktisch immer überflüssig ist. Ich sehe zwar hier im Forum, öfter mal, daß auf manche Befehle sync empfohlen wird, z.B. beim Schreiben eines netinstaller Images mit dd, aber auch hier ist sync überflüssig, weil dd selbst bereits intern sync aufruft.

Ansonsten wird auf jeden Fall sync ausgeführt, wenn man einen Datenträger unmountet. Wer also den Datenträger nicht blind abzieht sondern die Mechanismen zum (sicheren) Auswerfen im Dateimanager bzw. umount von der Kommanzeile nutzt, bekommt auf jeden Fall einen sauber gesyncten Datenträger.
Was ist da falsch?
Warum werden jetzt keine Leerzeilen akzeptiert?
Liegt das an pastebin?
Ich weiß es nicht. Du kannst aber auch von NoPoaste Dateien runterladen. Ich habe den Knopf zwar auch verzweifelt gesucht, aber der Thread hier hat Klarheit geschaffen:
viewtopic.php?t=183289

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

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

Beitrag von MSfree » 17.01.2022 10:42:30

AxelMD hat geschrieben: ↑ zum Beitrag ↑
17.01.2022 08:53:15
Warum haben wir, habe ich 2 mal log?
/media/axel/usbhdd1/backup/log/
und
/media/zxz/usbhdd1/Logs/

Welche Überlegung steckt dahinter?
Das eine Log ist nur die Ausgabe, die rsync produziert. Diese wird am Ende noch mit gzip komprimiert, um Platz zu sparen. Man kann diese Dateien dann allerdings nur mit einigen Editoren direkt lesen oder mit Kommandozeilenprogrammen wie zcat.

Das zweite Log ist im HTML-Format, das man direkt mit einem Webbrowser (Firefox) anzeigen kann. Das hatte ich damals eingebaut, als ich das Skript noch auf meiner damaligen Synology laufen ließ. Mit dem dort Eingebaute Webserver konnte ich die Logs bequem aufrufen und anschauen. Die Synology ist zwar inzwischen Geschichte, aber die HTML-formatierten Logs habe ich beibehalten. Wenn es dich stört, kannst du den Teil am Ende des Skripts auch auskommentieren oder löschen.

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

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

Beitrag von AxelMD » 17.01.2022 11:02:01

Das Script belasse ich so, das mit HTML ist ganz interessant.
Erst mal muss ich die Basics verstehen, dann kann ich anpassen.
Ansonsten verrenne ich mich.
Der Einstieg mit dem Script ist sowieso über meinem Kenntnisstand.
Ohne dich hätte ich das nicht hinbekommen, danke.

Code: Alles auswählen

# aktuelles Datum
DATE=`date +%d.%m.%y,%H,%M`
Wenn ich das letzte Script auf Minuten ausführbar mit "%M" stelle, werden nicht
die letzten Daten von heute z. B. 11 h aufgenommen.
Es wird nur das erste Backup vom Tag berücksichtigt, ich erzeuge nur Duplikate.

Woran liegt das?
In welcher Zeile ist das hinterlegt?


Hast Du dazu auch Input? ----> viewtopic.php?t=183277

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

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

Beitrag von MSfree » 17.01.2022 13:35:05

AxelMD hat geschrieben: ↑ zum Beitrag ↑
17.01.2022 11:02:01
Wenn ich das letzte Script auf Minuten ausführbar mit "%M" stelle, werden nicht
die letzten Daten von heute z. B. 11 h aufgenommen.
Es wird nur das erste Backup vom Tag berücksichtigt, ich erzeuge nur Duplikate.
Ich verstehe nicht, was du meinst. Schau mal in das erzeugte Log, da steht drin, welche Dateien übertragen wurden.
Hast Du dazu auch Input? ----> viewtopic.php?t=183277
Nur soviel:
Man sollte bei der "Anleitung", die du unter Bitblokes gefunden hast, auch mal auf das Datum schauen. Leider fehlt solchen Blogs oft das Veröffentlichungsdatum, aber die Kommentare weiter unten sind 10 Jahre alt. Mittlerweile wurde Debian auf systemd umgestellt, und da funktioniert die 10 Jahre alte Methode möglicherweise nicht mehr so, wie beschrieben.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

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

Beitrag von uname » 17.01.2022 13:38:44

Etwas offtopic:

Ich habe jetzt nicht alles gelesen. Aber vor Jahren habe ich auch mal ein Script geschrieben.
Du musst es bestimmt nicht verwenden. Aber vielleicht enthält es ja noch ein paar interessante Ansätze:
https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC

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

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

Beitrag von AxelMD » 17.01.2022 13:46:54

Hier bitte nur "rsync Backup von /home/user - Script von MSfree"

Automatische Datensicherung: Backup-Script mit rsync bei Einstecken einer externen Festplatte
bitte da ------------>
viewtopic.php?t=183277#p1292918

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

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

Beitrag von AxelMD » 18.01.2022 14:02:43

MSfree hat geschrieben: ↑ zum Beitrag ↑
17.01.2022 10:35:06
AxelMD hat geschrieben: ↑ zum Beitrag ↑
17.01.2022 08:53:15
Warum haben die Scripte von MSfree keinen "sync" Befehl enthalten damit im Schreibpuffer des Linux-Kernels befindliche Daten auf den Datenträger geschrieben werden?
Weil sync praktisch immer überflüssig ist. Ich sehe zwar hier im Forum, öfter mal, daß auf manche Befehle sync empfohlen wird, z.B. beim Schreiben eines netinstaller Images mit dd, aber auch hier ist sync überflüssig, weil dd selbst bereits intern sync aufruft.

Ansonsten wird auf jeden Fall sync ausgeführt, wenn man einen Datenträger unmountet. Wer also den Datenträger nicht blind abzieht sondern die Mechanismen zum (sicheren) Auswerfen im Dateimanager bzw. umount von der Kommanzeile nutzt, bekommt auf jeden Fall einen sauber gesyncten Datenträger.
Ich nutze Dolphin zum unmounten, also keine Kommandozeile.
Kann ich ein "sync" am Ende des Scripts anfügen?
Bei langsamen USB Stick*s scheint es erforderlich zu sein.


Wie kann ich das Script rsync-msfree-4.sh im Ordner /home/axel/rsnyc direkt aufrufen?

https://qastack.com.de/ubuntu/427818/ho ... -full-path

Geht das nicht einfacher?

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

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

Beitrag von MSfree » 18.01.2022 14:38:34

AxelMD hat geschrieben: ↑ zum Beitrag ↑
18.01.2022 14:02:43
Kann ich ein "sync" am Ende des Scripts anfügen?
Kann man machen, schadet nicht, ist aber überflüssig.
Bei langsamen USB Stick*s scheint es erforderlich zu sein.
Nein, es ist selbst dann unnötig. Wenn man umount ausführt, dauert es halt dann länger, bis alle Puffer und Caches rausgeschrieben sind. Aber wenn umount fertig ist, ist das Medium garantiert gesynct.

Auch Dolphin sollte erst dann zur Bereitschaft zurückkehren, wenn dort "Auswerfen", also der umount-Prozeß, vollständig durchgelaufen ist. Vorher darf man der Stick/die Platte halt nicht abziehen.

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

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

Beitrag von AxelMD » 18.01.2022 14:40:36

Auch Dolphin sollte erst dann zur Bereitschaft zurückkehren, wenn dort "Auswerfen", also der umount-Prozeß, vollständig durchgelaufen ist. Vorher darf man der Stick/die Platte halt nicht abziehen.
Nach oben
Die Fertigmeldung "USB Medium kann entfernt" bekomme ich von Dolphin manchmal zu früh.
Besonders oft wenn große Dateien kopiert werden.

Normalerweise ist im Terminal bei Eingabe von "sync" der Cursor sofort wieder verfügbar.
Unmounte ich mit Dolphin, bekomme die Nachricht USB kann weg, mache schnell ein "sync", arbeitet "sync"
oft noch. Das ist besonders auffällig bei langsamen USB-Flasch-Speicher der Fall.

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

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

Beitrag von MSfree » 18.01.2022 14:50:22

AxelMD hat geschrieben: ↑ zum Beitrag ↑
18.01.2022 14:40:36
Die Fertigmeldung "USB Medium kann entfernt" bekomme ich von Dolphin manchmal zu früh.
Was aber ein Bug im Dolphin wäre -> Bugreport.

Wie gesagt, es schadet nicht, wenn man ans Ende dass Backupskripts noch sync anhängt, dann ist man auf der sicheren Seite.

Antworten