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

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

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

Beitrag von AxelMD » 05.05.2024 07:50:37

rsync Skript
von MSfree https://pastebin.com/PvibG52j

rsync-msfree-5-minute.sh

Code: Alles auswählen

#/bin/bash
#=====================================================
# customize SRC, DSTDIR, HTMLLOGDIR, PREFIX:
#
#  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-* 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
sync
Was macht folgender Teilpart?

Code: Alles auswählen

#=====================================================
# 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
Was ist sleep 60?
Der Befehl sleep lässt den ausführenden Prozess (quasi sich selbst) für eine angegebene Zeit pausieren.
Damit kann beispielsweise in Shell-Skripten eine Wartepause erzwungen werden.
https://christoph-matt.de/de/blog/2023/ ... eispielen/

Warum ist sleep erforderlich?

Was muss ich in das Script einbauen damit ich den Fortschritt bzw. die Kopiervoränge angezeigt bekomme?

Wir bei dem msfree Script nicht automatisch gelöscht? Wie merke ich, wenn die HDD voll ist?

Antworten