Script zum Verzeichnis sichern automatisieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Ework
Beiträge: 401
Registriert: 11.07.2006 02:33:41
Wohnort: Heidelberg

Script zum Verzeichnis sichern automatisieren

Beitrag von Ework » 01.03.2013 17:41:42

Hallo,
ich möchte gerne meine Minecraft Savegames alle 60 Minuten per Cron sichern.
Es scheitert lediglich noch am Datei namen da "date +%c" Leerzeichen mit ausgibt die bei der Archiv Benamung stören.

Code: Alles auswählen

#!/bin/bash
DATEI="$(date +%c).tgz"
DIR=~/.minecraft/saves
tar -cvzf $DATEI $DIR
Ergibt folgenden Fehler:
tar: Beende mit Fehlerstatus aufgrund vorheriger Fehler

Dateiname ist nur Fr (für Freitag)

Wie kann ich die komplette Ausgabe von "date +%c" für den Dateinamen nutzen?

Vielen DAnk für die Hilfe.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von rendegast » 01.03.2013 18:32:25

tar -cvzf $DATEI $DIR

Code: Alles auswählen

tar -cvzf "$DATEI" $DIR
Quoten!

Spezielles Problem hier ist das gewählte Format:

Code: Alles auswählen

$ date +%c
Fr 01 Mär 2013 18:28:26 CET
Das "sortiert" nicht
->

Code: Alles auswählen

$ date +%F_%R
2013-03-01_18:32
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Ework
Beiträge: 401
Registriert: 11.07.2006 02:33:41
Wohnort: Heidelberg

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von Ework » 01.03.2013 19:09:31

Vielen Dank,
leider bekomme ich auch so einen Fehler:
tar (child): Kann nicht mit 2013-03-01_19 verbinden: Auflösung fehlgeschlagen

Code: Alles auswählen

#!/bin/bash
DATEI=$(date +%F_%R).tgz
DIR=/home/drbash/.minecraft/saves
tar -cvzf "$DATEI" $DIR
Warscheinlich stört nun doppelpunkt oder?

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

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von Meillo » 01.03.2013 20:32:29

Ework hat geschrieben: tar (child): Kann nicht mit 2013-03-01_19 verbinden: Auflösung fehlgeschlagen
Warum will tar denn verbinden? Hat das nun eingebaute Netzwerkfaehigkeit? :-D


Vielleicht hilft es, sich die Fehlermeldung auf Englisch anzuschauen:

Code: Alles auswählen

$ LC_ALL=C tar ...
Use ed once in a while!

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von Cae » 01.03.2013 21:00:35

Evtl. meint tar damit die Newline in der Variable. Bei Bedarf mit tr in Art

Code: Alles auswählen

var="$(date +%F_%T | tr -d '\n').tar"
eleminieren.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

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

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von Meillo » 01.03.2013 21:20:02

Cae hat geschrieben:Evtl. meint tar damit die Newline in der Variable. Bei Bedarf mit tr in Art

Code: Alles auswählen

var="$(date +%F_%T | tr -d '\n').tar"
eleminieren.
Da ist kein Newline von date mehr vorhanden. Siehe:

Code: Alles auswählen

$ a=`date +%F_%T`.tar  

$ echo "$a" | od -c
0000000   2   0   1   3   -   0   3   -   0   1   _   2   1   :   1   7
0000020   :   5   2   .   t   a   r  \n
0000030
Use ed once in a while!

qgirl
Beiträge: 224
Registriert: 14.08.2005 09:04:50
Lizenz eigener Beiträge: MIT Lizenz

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von qgirl » 01.03.2013 21:24:49

Code: Alles auswählen

tar -cvzf "$DATEI" --force-local $DIR
--force-local
archive file is local even if it has a colon
Gruss
qgirl

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von Cae » 01.03.2013 21:27:53

Hups, da hab' ich nicht aufgepasst. Eigentlich verwende ich die Form mit foo=$(date) haeufiger ohne Newline-Probleme.

Aber wo ich's gerade nochmal lese, tar interpretiert bei f foo:bar wohl foo als Netzwerkadresse (oder sonst irgendwas). Also stimmt
Ework hat geschrieben:Warscheinlich stört nun doppelpunkt oder?
und man kann die Doppelpunkte per var="$(date +%F_%T | tr : -).tar" ersetzen (oder gleich einen Doppelpunkt-freien Formatstring fuer date nehmen). Oder man macht's wie mein Vorposter (dessen Beitrag im Thread auftauchte, als ich meine gerade absenden wollte).

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

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

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von uname » 01.03.2013 21:51:55

Wäre es nicht viel einfacher es so zu machen:

Code: Alles auswählen

date +%Y%m%d%H%M
Die Trennzeichen sind doch eher lästig und Unterstriche kann man ja immer noch einbauen falls man Spaß daran hat.

Code: Alles auswählen

man date

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von rendegast » 02.03.2013 07:36:24

Aka uname, %R -> %H%M
Sogar mc hat Probleme damit und zeigt eine tgz mit ":" im Namen als leer an.
Sorry.


Aber noch zu dem Plan an sich,
Wäre nicht eine Art inkrementelles backup interessanter?

Code: Alles auswählen

DIR=~/.minecraft/saves
TARGETDIR=$SOMEWHERE/last 
    BACKUPDIR=$SOMEWHERE/$(date +%F_%H%M)
    OPTS="--delete --backup --backup-dir=$BACKUPDIR"

echo    rsync -a        $OPTS $EXCLUDES         $DIR/     $TARGETDIR
        rsync -a        $OPTS $EXCLUDES         $DIR/     $TARGETDIR
Speziell zu minecraft (und ich weiß nicht, ob es dafür zutrifft),
es sind wohl Spiele denkbar, wo nicht einfach ein älteres savegame auf Dateiebene (allein) ausgetauscht werden kann,
da vielleicht irgendwo ein Zeitstempel oder Checksumme vermerkt ist.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Ework
Beiträge: 401
Registriert: 11.07.2006 02:33:41
Wohnort: Heidelberg

Re: Script zum Verzeichnis sichern automatisieren

Beitrag von Ework » 02.03.2013 14:16:02

Vielen Dank für die Hilfe.
Ich hab mich der einfachheit für date +%Y%m%d%H%M entschieden.

Vielen Dank.

Antworten