Backup Script legt Dateien an, löscht ältere aber nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
malzeit
Beiträge: 115
Registriert: 15.04.2015 15:18:03
Wohnort: Niederrhein

Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von malzeit » 25.08.2015 16:34:45

Hallo,

erster Versuch von mir, ein simples Backupscript anzulegen (okay, copy&paste + bisschen modelliert, also mehr geklaut als generiert).
Das ganze als ausführbare Datei in /etc/cron.daily verschoben und jetzt testweise einfach 3 Tage laufen lassen.

Funktioniert, es wird jeweils eine Logatei und eine Archivdatei angelegt.
..nur werden die Daten, welche älter als 2 Tage sind, nicht gelöscht :(

Führe ich

Code: Alles auswählen

sudo /usr/bin/find /media/backup/ -mtime +1 -type f -exec /bin/rm {} \;
in einer shell aus, werden alle Dateien älter als 2 Tage, gelöscht.

Wo liegt mein Fehler?

Gruß

Code: Alles auswählen

#!/bin/bash
# Script fuer ein naechtliches Backup mit 2 Tagessaetzen

### Einstellungen ##
BACKUPDIR="media/backup"           ## Pfad zum Backupverzeichnis
SOURCE="var"                 ## Verzeichnis(se) welche(s) gesichert werden soll(en)
DATUM="$(date +%d-%m-%Y)"          ## Datumsformat einstellen

### Verzeichnisse/Dateien welche nicht gesichert werden sollen ! Achtung keinen Zeilenumbruch ! ##
EXCLUDE="--exclude=var/cache --exclude=var/spool/squid --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4"

### Wechsel in root damit die Pfade stimmen ##
cd /

### Alle Backups löschen aelter als 2 Tage ###
/usr/bin/find /media/backup/ -mtime +1 -type f -exec /bin/rm {} \;

### Nun wird das eigentliche Backup ausgefuehrt ##
tar -cpjvf ${BACKUPDIR}/${DATUM}.tar.bzip2 ${SOURCE} ${EXCLUDE} >> ${BACKUPDIR}/${DATUM}.log 2>&1
Laptop...................+...Server
Lenovo X1 Carb. 1st Gen..+...Z83 MiniPC - 4 W Leerlauf, 10 W Volllast inkl. 2,5 W USB-HDD
Intel i7-3667U @3,2 GHZ..+...Intel Atom Z8350 @ 0,48 - 1,92 GHz
8 GiB RAM................+...2 GiB RAM
240 GiB SSD..............+...32 GB interner Flash als root + 592GiB USB-HDD als /var
Debian Sid - AMD64.......+...Debian stable
++++Wiki-Artikel zum Thema Fluxbox++++

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von heisenberg » 25.08.2015 17:02:15

Ich denke es liegt daran, dass sudo per Default ein Terminal haben will( Einstellung requiretty in /etc/sudoers).

Logge die Ausgabe und Standardfehlerausgabe von Deinem Script mit und prüfe das.

/etc/cron.d/hyper-backup

Code: Alles auswählen

0 3 * * * deinscript.sh 2>&1 | xargs echo "$(date) : " >/tmp/hyper-backup.log

Benutzeravatar
malzeit
Beiträge: 115
Registriert: 15.04.2015 15:18:03
Wohnort: Niederrhein

Re:Backup Script legt Dateien an,löscht ältere aber

Beitrag von malzeit » 26.08.2015 13:10:41

heisenberg hat geschrieben:Ich denke es liegt daran, dass sudo per Default ein Terminal haben will( Einstellung requiretty in /etc/sudoers).
...
Hallo,

danke für die Antwort. Sudo braucht es nicht da cron.daily ja per default mit root-Rechten läuft (die Dateien werden ja auch mit root als Besitzer und Gruppe angelegt). Aber... das mit dem "...will ein Terminal" brachte mich auf eine Idee:

aus

Code: Alles auswählen

/usr/bin/find /media/backup/ -mtime +1 -type f -exec /bin/rm {} \;
wurde

Code: Alles auswählen

/usr/bin/find /media/backup/ -mtime +1 -type f -exec /bin/rm {} \; 2>&1
Nun läuft es :D
Laptop...................+...Server
Lenovo X1 Carb. 1st Gen..+...Z83 MiniPC - 4 W Leerlauf, 10 W Volllast inkl. 2,5 W USB-HDD
Intel i7-3667U @3,2 GHZ..+...Intel Atom Z8350 @ 0,48 - 1,92 GHz
8 GiB RAM................+...2 GiB RAM
240 GiB SSD..............+...32 GB interner Flash als root + 592GiB USB-HDD als /var
Debian Sid - AMD64.......+...Debian stable
++++Wiki-Artikel zum Thema Fluxbox++++

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

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von uname » 26.08.2015 13:21:42

Das Script würde ich in der Form nicht automatisiert verwenden. Sollte aus irgendwelchen Gründen das Backup drei Tage nicht angefertigt werde können (z.B. tar-Befehl gelöscht), hast du gar kein Backup mehr ;-) Sinnvoller sind wahrscheinlich rotierende Backups, wobei auch das natürlich schiefgehen kann. Bei z.B. 7 Backup-Generationen könntest du den Wochentag (0 bis 6) anstattt des vollständigen Datums verwenden.

Code: Alles auswählen

date +%w
bzw.:

Code: Alles auswählen

DATUM="$(date +%w)" 
(find-Befehl entfernen)
Der aufgeführte Wechsel nach "/" (cd /) kann auch riskant sein. Würde ich irgendwie anders lösen.
Hier mal das Script was ich vor Jahren mal geschrieben habe, welches jedoch eine andere Technik nutzt. Als rsync-1:1-inkrementelles-Backup mit Hardlinks wird es zudem sehr viel schneller sein. Auch brauchen meine 31 Backup-Generationen bei wenig Datenänderungen über den Monat weniger Platz als deine zwei bzw. drei Vollsicherungen ;-)
https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von scientific » 27.08.2015 23:05:51

ich hab btrfs in verwendung. mache damit alle 10 minuten ein fullbackup (aka snapshot). übertrage jede stunde, tag, woche, monat einmal inkrementell alks auf eine externe platte und bin super zufrieden damit. ;-)
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

gbotti
Beiträge: 846
Registriert: 16.07.2010 14:24:43
Wohnort: München

Re: Re:Backup Script legt Dateien an,löscht ältere aber

Beitrag von gbotti » 28.08.2015 09:46:26

malzeit hat geschrieben:

Code: Alles auswählen

/usr/bin/find /media/backup/ -mtime +1 -type f -exec /bin/rm {} \; 2>&1
Nun läuft es :D
Hi.

Das würde vermutlich auch gehen:

Code: Alles auswählen

/usr/bin/find /media/backup/ -mtime +1 -type f -delete 2>&1
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft

Benutzeravatar
malzeit
Beiträge: 115
Registriert: 15.04.2015 15:18:03
Wohnort: Niederrhein

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von malzeit » 28.08.2015 11:15:25

uname hat geschrieben:Das Script würde ich in der Form nicht automatisiert verwenden. Sollte aus irgendwelchen Gründen das Backup drei Tage nicht angefertigt werde können (z.B. tar-Befehl gelöscht), hast du gar kein Backup mehr ;-)
Jo, das stimmt allerdings... suche jetzt nach einer Lösung mit if then else :)
Sinnvoller sind wahrscheinlich rotierende Backups, wobei auch das natürlich schiefgehen kann. Bei z.B. 7 Backup-Generationen könntest du den Wochentag (0 bis 6) anstattt des vollständigen Datums verwenden.

Code: Alles auswählen

date +%w
bzw.:

Code: Alles auswählen

DATUM="$(date +%w)" 
(find-Befehl entfernen)
Probiere ich mal aus.
Der aufgeführte Wechsel nach "/" (cd /) kann auch riskant sein. Würde ich irgendwie anders lösen.
Sehe ich ein und habe ich rausgenommen, mache einfach die Pfadangaben vollständig, dann sollte es ja auch klappen.
Hier mal das Script was ich vor Jahren mal geschrieben habe, welches jedoch eine andere Technik nutzt. Als rsync-1:1-inkrementelles-Backup mit Hardlinks wird es zudem sehr viel schneller sein. Auch brauchen meine 31 Backup-Generationen bei wenig Datenänderungen über den Monat weniger Platz als deine zwei bzw. drei Vollsicherungen ;-)
https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC
Werde ich jetzt mal ausprobieren; hoffe nur dass das inkrementelle nicht zu sehr anwächst; es wird nämlich auch ein ouwncloud-server mit gesichert und ich befürchte dass da jedes Backup ein beinahe-voll-backup sein wird ;)

Gruß + Danke
Laptop...................+...Server
Lenovo X1 Carb. 1st Gen..+...Z83 MiniPC - 4 W Leerlauf, 10 W Volllast inkl. 2,5 W USB-HDD
Intel i7-3667U @3,2 GHZ..+...Intel Atom Z8350 @ 0,48 - 1,92 GHz
8 GiB RAM................+...2 GiB RAM
240 GiB SSD..............+...32 GB interner Flash als root + 592GiB USB-HDD als /var
Debian Sid - AMD64.......+...Debian stable
++++Wiki-Artikel zum Thema Fluxbox++++

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

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von uname » 28.08.2015 11:39:09

malzeit hat geschrieben:Werde ich jetzt mal ausprobieren; hoffe nur dass das inkrementelle nicht zu sehr anwächst
Auch hier kannst du natürlich weniger Backupgenerationen verwenden.

Benutzeravatar
heisenberg
Beiträge: 4123
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von heisenberg » 28.08.2015 11:42:21

...man könnte auch einfach rsnapshot verwenden... https://wiki.ubuntuusers.de/rsnapshot

Benutzeravatar
malzeit
Beiträge: 115
Registriert: 15.04.2015 15:18:03
Wohnort: Niederrhein

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von malzeit » 04.09.2015 16:41:27

Nach mehreren Tagen des Testens muss ich sagen "fett krasses Danke Alda" (wie man so im Pott sagt) an uname.
War zwar weniger das was ich suchte, dafür mehr sinnvoll :lol:

Wie setzt man das denn hier als "gelöst", oder macht man das nicht mehr? :)

Gruß
Laptop...................+...Server
Lenovo X1 Carb. 1st Gen..+...Z83 MiniPC - 4 W Leerlauf, 10 W Volllast inkl. 2,5 W USB-HDD
Intel i7-3667U @3,2 GHZ..+...Intel Atom Z8350 @ 0,48 - 1,92 GHz
8 GiB RAM................+...2 GiB RAM
240 GiB SSD..............+...32 GB interner Flash als root + 592GiB USB-HDD als /var
Debian Sid - AMD64.......+...Debian stable
++++Wiki-Artikel zum Thema Fluxbox++++

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

Re: Backup Script legt Dateien an, löscht ältere aber nicht

Beitrag von uname » 04.09.2015 18:58:41

Einfach fett krass im ersten Beitrag den Titel ändern und gelöst vorschreiben.

Antworten