Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
mlamhm
Beiträge: 19
Registriert: 20.01.2016 15:31:53
Wohnort: Mannheim

Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von mlamhm » 09.01.2025 19:45:48

Hallo,

ich habe ein altes Script, welches mir mit rsync ein BackUp erstellt und nicht mehr funktioniert.
Etwas gelöscht oder etwas falsches eingetippt?

Dieses Script hat mir ein Komplettes BackUp meines Home-Verzeichnisses angelegt und
sobald ich mal eine Datei löschte oder sich etwas in meinem Home änderte, so wurde die
gelöschte/veränderte Datei in einen Ordner mit dem aktuellen Datum abgelegt.
So konnte ich alles bis zu 31 Tage wieder herstellen.
Folgendes Script "backup.sh" habe ich im Verzeichnis /etc/cron.hourly abgelegt.
Die Dateirechte sind 755 root:root unter /etc/cron.hourly

Code: Alles auswählen

#!/bin/bash

set -ex

# check for mount
grep /media/synology/backup /etc/mtab > /dev/null || exit 1

# directory to backup
BDIR=/home/user/

# Destination dir for rsync
DDIR=/media/synology/backup/rsync_backup

# excludes file - this contains a wildcard pattern per line of files to exclude
#EXCLUDES=/root/rsy.excl

# BACKUPDIR=${1:-`date +%A`}
BACKUPDIR=${1:-"day"`date +%d`}

OPTS="--force
    --ignore-errors \
    --delete-excluded \
    --exclude-from=$EXCLUDES
    --delete --backup --backup-dir=$DDIR/$BACKUPDIR -a -v"

export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

# if destination does not exist, make it;-)
[ -d $DDIR ] || mkdir $DDIR

# write logfile
echo oooooooooooooooooooooooooooooooooooooooooooo >> /root/rsy.log
date >> /root/rsy.log

# delete existing backup dir
[ -d $DDIR/$BACKUPDIR ] && (echo remaking $DDIR/$BACKUPDIR >> /root/rsy.log; rm  -r $DDIR/$BACKUPDIR)

# now the actual transfer
rsync $OPTS $BDIR $DDIR/current >> /root/rsy.log
Des weiteren passiert folgendes:
einmal gestartet macht es eine 1:1 Kopie im Ordner current, soweit ok.
es wird aber nicht stündlich ausgeführt, ein erneutes manuelles ausführen legt mir eine 1:1 Kopie
im aktuellen Tage-Ordner ab.

Leider Verstehe ich dieses Script nicht so richtig, bis auf die Pfade und die excl Datei.


Mit den besten Grüßen
Mike

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

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von MSfree » 10.01.2025 09:09:07

mlamhm hat geschrieben: ↑ zum Beitrag ↑
09.01.2025 19:45:48
es wird aber nicht stündlich ausgeführt
Woher willst du das wissen?
Leider Verstehe ich dieses Script nicht so richtig
Du führst also Software aus, die du irgendwo im Internet gefunden hast, ohne sie verstanden zu haben? Das ist keine gute Idee.

Ich bin mir ziemlich sicher, daß das Skript stündlich ausgeführt wird, wenn du es in /etc/cront.hourly abgelegt hast. In der 6. Zeile verbirgt sich aber schon ein "exit", also die Beendigung des Skripts, wenn /media/synology/backup nicht gemountet ist.

Das Skript logt in die Datei /root/rsy.log, allerdings erst, nachdem das Skript in der 6. Zeile eventuell schon beendet wurde.

cron logt zusätzlich ins Systemjournal, das man mit journalctl abrufen kann. Dort solltest du sehen können, daß cron.hourly ausgeführt wird.

Hmm, ich sehe gerade, daß du laut eigener Aussage seit 2008 Probleme mit dem Skript hast. Sollten da nach so langer Zeit, die Verständnisprobleme nicht so langsam mal behoben sein?

Benutzeravatar
mlamhm
Beiträge: 19
Registriert: 20.01.2016 15:31:53
Wohnort: Mannheim

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von mlamhm » 10.01.2025 16:12:07

Du führst also Software aus, die du irgendwo im Internet gefunden hast, ohne sie verstanden zu haben? Das ist keine gute Idee.
Ich habe dieses Script vor sehr langer Zeit einmal bekommen und nicht im Internet gefunden.
Ich bin mir ziemlich sicher, daß das Skript stündlich ausgeführt wird, wenn du es in /etc/cront.hourly abgelegt hast. In der 6. Zeile verbirgt sich aber schon ein "exit", also die Beendigung des Skripts, wenn /media/synology/backup nicht gemountet ist.
So soll es auch sein. Dies hat mir mal jemand geschrieben mit dem ich leider keinen Kontakt mehr habe :(
Das Laufwerk ist gemountet, dennoch kann es ja mal vorkommen das es beim Start nicht gemountet wird.
Hmm, ich sehe gerade, daß du laut eigener Aussage seit 2008 Probleme mit dem Skript hast. Sollten da nach so langer Zeit, die Verständnisprobleme nicht so langsam mal behoben sein?
Das ist richtig, ich habe es damals mit dem KDE Aufgabenplaner gelöst und das Script sein lassen.
Nun habe ich einige Daten verloren und wollte es wieder nutzen. Das heisst aber nicht das ich nach einiger Zeit mit der Schreibweise in einem bash Script vertraut bin.

Jetzt habe ich alles bis zu diesem Punkt "# directory to backup" auskommentiert, so wie es von Anfang an auch war.
Es funktioniert. Damit kann ich leben und die "rsy.excl" wieder befüllen.

Benutzeravatar
4A4B
Beiträge: 981
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von 4A4B » 10.01.2025 16:36:03

mlamhm hat geschrieben: ↑ zum Beitrag ↑
10.01.2025 16:12:07
Das Laufwerk ist gemountet, dennoch kann es ja mal vorkommen das es beim Start nicht gemountet wird.

[...]

Jetzt habe ich alles bis zu diesem Punkt "# directory to backup" auskommentiert, so wie es von Anfang an auch war.
Es funktioniert.
Wenn das Laufwerk nicht gemountet ist und du die Prüfung dessen auskommentierst, kann "funktionieren" auch bedeuten, dass das Backup nicht auf dem externen Laufwerk, sondern in dem lokalen Verzeichnis /media/synology/backup landet.

Benutzeravatar
cosinus
Beiträge: 4352
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von cosinus » 10.01.2025 17:11:41

mlamhm hat geschrieben: ↑ zum Beitrag ↑
09.01.2025 19:45:48
Leider Verstehe ich dieses Script nicht so richtig, bis auf die Pfade und die excl Datei.
Dann macht dieses Script für dich keinen Sinn. Auch weil du mit der Person, die dir das angedreht hat, keinen Kontakt mehr hast.
Warum denkst du dir nicht dein eigenes Backupkonzept aus? Und wenn es nur heißt: "Jeden Freitag per Hand alles von /home/blablubb auf das NAS kopieren"
Oder du nimmst irgendeine Backupsoftware wie zB backintime.
Oder du machst dir selbst was mit rsync (so mach ich das, brauch da aber keine Scripte, aliase in der .bashrc reichen schon für mich aus)

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

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von MSfree » 10.01.2025 17:39:44

cosinus hat geschrieben: ↑ zum Beitrag ↑
10.01.2025 17:11:41
brauch da aber keine Scripte, aliase in der .bashrc reichen schon für mich aus
Ein Skript, das nur ein Zeile enthält, auf der sämtlich Parameter für rsync aufgeführt werden, ist halt bequem, und man muß sich die Parameter nicht dauerhaft merken. Gerade rsync hat zahlreiche mögliche Parameter und die Aufruf kann sehr lang werden.

Ein Alias ist hier sogesehen auch nur eine Art Skript, das halt nicht auf einer eigenen Datei liegt sondern in deiner .bashrc liegt. Der Effekt ist letztlich der gleiche.

Benutzeravatar
cosinus
Beiträge: 4352
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von cosinus » 10.01.2025 17:56:03

MSfree hat geschrieben: ↑ zum Beitrag ↑
10.01.2025 17:39:44
Ein Alias ist hier sogesehen auch nur eine Art Skript,
Ich weiß, ich wollte damit auch nur sagen, dass mir da Einzeiler als Lösung reichen. :)

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

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von MSfree » 10.01.2025 18:06:21

cosinus hat geschrieben: ↑ zum Beitrag ↑
10.01.2025 17:56:03
Ich weiß, ich wollte damit auch nur sagen, dass mir da Einzeiler als Lösung reichen. :)
Mit einem Einzeiler ist es bei meiner Backuplösung halt nicht getan. Der Aufruf von rsync ist von der Methotik zwar immer gleich, einige Parameter sind halt über Variablen definiert, so daß man das Skript leicht auf andere Systeme portieren kann.

Der Name des Zielverzeichnisses auf dem Backupmedium ändert sich z.B. täglich, da steckt halt das Datum mit drin. Auch der Name der Logdatei enthält ein Datum und wird auf HMTL umgesetzt. Dadurch ergeben sich halt mehr als nur ein einfacher Programmaufruf. Das könnte man zwar auch alles in eine lange Zeile schreiben, getrennt durch Semikolons, aber das kann hinterher keine Sau mehr lesen :mrgreen:

Benutzeravatar
cosinus
Beiträge: 4352
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Script mit rsync als BackUp funktioniert nicht mehr wie es soll

Beitrag von cosinus » 10.01.2025 18:32:45

MSfree hat geschrieben: ↑ zum Beitrag ↑
10.01.2025 18:06:21
Der Name des Zielverzeichnisses auf dem Backupmedium ändert sich z.B. täglich, da steckt halt das Datum mit drin.
Ich erstell neue Archive, in den Dateinamen kommt das aktuelle Datum rein. Ich hab auch was mit rsync, aber das aktualisiert den Zielordner einfach nur.

Code: Alles auswählen

alias allbackup='dpkg -l > $backuptarget/dpkg.`date +\%F`.txt; etc-backup; home-backup; roothome-backup; var-backup'
alias etc-backup='mksquashfs /etc $backuptarget/etc.`date +\%F`.sqfs'
alias home-backup='mksquashfs /home $backuptarget/home.`date +\%F`.sqfs'
alias roothome-backup='mksquashfs /root $backuptarget/roothome.`date +\%F`.sqfs'
alias var-backup='mksquashfs /var $backuptarget/var.`date +\%F`.sqfs'
Meine externe Platte muss ich eh aus dem Schrank kramen und anschließen/einschalten, da ist das öffnen mit cryptsetup und mounten auch kein Aufwand mehr. Dann tipp ich einfach nur noch allbackup ein.

Antworten