Ordnerkopie jede Stunde

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Ordnerkopie jede Stunde

Beitrag von Knogle » 20.09.2016 23:24:30

Ich gruesse euch liebe Community
Ich wuerde auf meinem Debian System gerne ein Script laufen lassen, welches jede Stunde eine Kopie eines Ordners erstellt.
Der neue Ordner, also das Backup, sollte dabei als Name nur die aktuelle Uhrzeit oder das Datum haben

Wie kann ich das umsetzen? Bitte um Rat

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Ordnerkopie jede Stunde

Beitrag von smutbert » 21.09.2016 00:21:06

Du hast vermutlich noch nicht viel Erfahrung auf der Kommandozeile?

Einen Befehl mit cron stündlich auszuführen ist gar kein Problem, daher würde ich einmal damit beginnen einen Befehl bzw. ein kurzes Skript zusammenzubasteln, das das macht, was du willst. »date« gibt beispielsweise Uhrzeit und Datum aus und man kann mit einem Parameter der Form "+%d.%m.%Y" (ergäbe zB 21.09.2016) festlegen wie die Zeit dargestellt wird - du könntest etwa

Code: Alles auswählen

$ date +%H:%M_%d.%m.%g
»cp« zum Kopieren kennst du wahrscheinlich. Da kann man die Ausgabe von date direkt in den Namen des Zielordners einbauen

Code: Alles auswählen

$ cp -a "mein_Ordner" "Kopie_$(date +%H:%M_%d.%m.%g)"
Als Skript würde ich das beispielsweise etwa so schreiben

Code: Alles auswählen

#!/bin/bash

Quellordner="/home/nutzer/mein_Ordner"
Zielordner="/home/nutzer/Kopie_$(date +%Y-%m-%d_%H-%M)"

#ueberpruefen ob der Quellordner existiert und der Zielordner noch nicht vorhanden ist
if [ ! -d "${Quellordner}" ]; then
    echo "Fehler:"
    echo "${Quellordner} existiert nicht!"
    exit 1
fi
if [ -d "${Zielordner}" ]; then
    echo "Fehler:"
    echo "${Zielordner} bereits vorhanden!"
    exit 1
fi

#Kopieren und falls erfolgreich abgeschlossen -> Erfolgsmeldung
cp -a "${Quellordner}" "${Zielordner}" && echo "Kopieren erfolgreich beendet."
Wenn das Skript dann zufriedenstellend funktioniert, könntest du es einfach nach »/etc/cron.hourly« kopieren. Dann wird es stündlich als root ausgeführt.
Zuletzt geändert von smutbert am 21.09.2016 14:00:01, insgesamt 2-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Ordnerkopie jede Stunde

Beitrag von Meillo » 21.09.2016 08:54:13

smutbert hat geschrieben:

Code: Alles auswählen

$ cp -a "mein_Ordner" "Kopie_$(date +%H:%M_%d.%m.%g)"
Aber man verwende doch bitte ein ordentliches Datumsformat, wie:

Code: Alles auswählen

date +%Y-%m-%d_%H:%M
... dann sind die Ergebnisordner naemlich auch korrekt sortiert und das Datum ist auch in Jahren noch korrekt dekodierbar.

Auf Doppelpunkte sollte man uebrigens verzichten, wenn man die Dateien auf andere Systeme uebertragen will. AFAIR machen die bei Windows Probleme.
Use ed once in a while!

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Ordnerkopie jede Stunde

Beitrag von smutbert » 21.09.2016 14:00:24

solche Details wollte ich dem TE überlassen :mrgreen:
(im Skript hab ichs trotzdem angepasst)

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Ordnerkopie jede Stunde

Beitrag von Meillo » 21.09.2016 14:42:55

smutbert hat geschrieben:solche Details wollte ich dem TE überlassen :mrgreen:
Besser gleich sinnvolle Vorschlaege machen als nacher die Folgeprobleme loesen zu muessen.
Use ed once in a while!

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Ordnerkopie jede Stunde

Beitrag von Knogle » 21.09.2016 17:21:45

Super, habe das Script jetzt getestet und bisschen angepasst
Sieht jetzt so aus

Code: Alles auswählen


#!/bin/bash

Quellordner="/home/wheel/Server"
Zielordner="/home/wheel/Backup_$(date +%Y-%m-%d_%H-%M).tar"

#ueberpruefen ob der Quellordner existiert und der Zielordner noch nicht vorhanden ist
if [ ! -d "${Quellordner}" ]; then
    echo "Quellordner existiert nicht!"
    exit 1
fi
if [ -d "${Zielordner}" ]; then
    echo "Zielordner bereits vorhanden!"
    exit 1
fi

#Kopieren und falls erfolgreich abgeschlossen -> Erfolgsmeldung
screen tar -zcvf  "${Zielordner}" "${Quellordner}" && echo "Archivieren erfolgreich beendet!"

Problem ist jedoch: Wenn ich das in den Ordner cron.hourly reinschiebe wird es nicht stuendlich ausgefuehrt, was mache ich da falsch?

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Ordnerkopie jede Stunde

Beitrag von smutbert » 21.09.2016 17:32:17

Hast du es ausführbar gemacht?

Code: Alles auswählen

# chmod +x /etc/cron.hourly/mein-skript

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Ordnerkopie jede Stunde

Beitrag von ThorstenS » 21.09.2016 18:08:10

Als Anregung, wie du platzsparender Backups mit BTRFS anlegen könntest:
http://www.admin-magazin.de/Das-Heft/20 ... -Snapshots

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Ordnerkopie jede Stunde

Beitrag von Meillo » 22.09.2016 00:21:39

Knogle hat geschrieben: Problem ist jedoch: Wenn ich das in den Ordner cron.hourly reinschiebe wird es nicht stuendlich ausgefuehrt, was mache ich da falsch?
Es hat vermutlich einen Punkt im Namen ... ein ueblicher Fehler. Siehe run-parts(8).
Use ed once in a while!

Antworten