Discussion:
tar und relative Pfade
Alex Winzer
2013-12-17 09:36:30 UTC
Permalink
Hallo,

ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.

Wenn ich folgendes eingebe, sieht das am Ende so aus:

tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
tar: 2013_12_15: Cannot stat: No such file or directory
tar: 2013_12_16: Cannot stat: No such file or directory
tar: 2013_12_17: Cannot stat: No such file or directory
tar: test.tar: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors


Ich möchte erreichen, dass alle (sichtbaren) Dateien im Verzeichnis
"/srv/mysql" in die Datei "/srv/mysql/.backup/test.tar" gespeichert
werden. Mit "tar -jPcvf /srv/mysql/.backup/test.tar /srv/mysql/*"
erreiche ich das Ziel zwar auch - aber eben mit den absoluten Pfaden.

Da -C auf diversen Seiten empfohlen wird und -C über man tar das
Richtige zu sein scheint, muss der Fehler also bei mir liegen.

Gruß, Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Uwe Eggert
2013-12-17 10:17:21 UTC
Permalink
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
tar: 2013_12_15: Cannot stat: No such file or directory
tar: 2013_12_16: Cannot stat: No such file or directory
tar: 2013_12_17: Cannot stat: No such file or directory
tar: test.tar: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Ich möchte erreichen, dass alle (sichtbaren) Dateien im Verzeichnis
"/srv/mysql" in die Datei "/srv/mysql/.backup/test.tar" gespeichert
werden. Mit "tar -jPcvf /srv/mysql/.backup/test.tar /srv/mysql/*"
erreiche ich das Ziel zwar auch - aber eben mit den absoluten Pfaden.
Da -C auf diversen Seiten empfohlen wird und -C über man tar das
Richtige zu sein scheint, muss der Fehler also bei mir liegen.
Gruß, Alex
Hi,

muss es nicht so aussehen:

tar -Schalter Archiv Datei Datei

dann wäre der Befehl nämlich falsch.

Gruß

Uwe Eggert
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-17 11:25:39 UTC
Permalink
Hallo,
Post by Uwe Eggert
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.
[...]
Hi,
tar -Schalter Archiv Datei Datei
dann wäre der Befehl nämlich falsch.
Die Idee ist nicht auf meinem Mist gewachsen. Ich habe entsprechendes
z.B. hier [1] gefunden. Wenn ich es so probiere

tar -czf /srv/mysql/.backup/test.tar -C /srv/mysql /srv/mysql/*

erstellt er das Archiv, gibt mir aber die Fehlermeldung "tar: Removing
leading `/' from member names" aus und im Archiv habe ich wieder den
vollständigen Pfad.
Und hier [2] steht ""tar" wandelt absolute Pfade immer in relative Pfade
um (durch entfernen des "/" am Pfadanfang). So können die gesicherten
Daten an eine beliebige wählbare Stelle zurückgeschrieben werden." <-
Das wäre mein Ziel. Aber heraus kommt das

server:/srv/mysql/.backup # tar -czf /srv/mysql/.backup/test.tar -C
/srv/mysql srv/mysql/*
tar: srv/mysql/*: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
server:/srv/mysql/.backup # tar -czf /srv/mysql/.backup/test.tar -C
srv/mysql /srv/mysql/*
tar: srv/mysql: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
server:/srv/mysql/.backup # tar -czf srv/mysql/.backup/test.tar -C
/srv/mysql /srv/mysql/*
tar: Removing leading `/' from member names
tar (child): srv/mysql/.backup/test.tar: Cannot open: No such file or
directory
tar (child): Error is not recoverable: exiting now

Und hier [3] steht noch, der Schalter -P wäre für den relativen Pfad.
Das klappt aber auch nicht - jedenfalls nicht bei mir.

Gruß, Alex

[1a] http://unix.stackexchange.com/questions/22842/tar-with-relative-paths
[1b]
https://www.mail-archive.com/debian-user-***@lists.debian.org/msg71876.html
[2] http://www.ostc.de/howtos/unix-backup-HOWTO.txt
[3]
http://www.linuxquestions.org/questions/linux-software-2/tar-archive-file-need-relative-path-374755/
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Christian Pelz
2013-12-17 12:02:33 UTC
Permalink
Post by Alex Winzer
Hallo,
Post by Uwe Eggert
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.
[...]
Hi,
tar -Schalter Archiv Datei Datei
dann wäre der Befehl nämlich falsch.
Die Idee ist nicht auf meinem Mist gewachsen. Ich habe entsprechendes
z.B. hier [1] gefunden. Wenn ich es so probiere
tar -czf /srv/mysql/.backup/test.tar -C /srv/mysql /srv/mysql/*
erstellt er das Archiv, gibt mir aber die Fehlermeldung "tar: Removing
leading `/' from member names" aus und im Archiv habe ich wieder den
vollständigen Pfad.
Und hier [2] steht ""tar" wandelt absolute Pfade immer in relative Pfade
um (durch entfernen des "/" am Pfadanfang). So können die gesicherten
Daten an eine beliebige wählbare Stelle zurückgeschrieben werden." <-
Das wäre mein Ziel. Aber heraus kommt das
server:/srv/mysql/.backup # tar -czf /srv/mysql/.backup/test.tar -C
/srv/mysql srv/mysql/*
tar: srv/mysql/*: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
server:/srv/mysql/.backup # tar -czf /srv/mysql/.backup/test.tar -C
srv/mysql /srv/mysql/*
tar: srv/mysql: Cannot chdir: No such file or directory
tar: Error is not recoverable: exiting now
server:/srv/mysql/.backup # tar -czf srv/mysql/.backup/test.tar -C
/srv/mysql /srv/mysql/*
tar: Removing leading `/' from member names
tar (child): srv/mysql/.backup/test.tar: Cannot open: No such file or
directory
tar (child): Error is not recoverable: exiting now
Und hier [3] steht noch, der Schalter -P wäre für den relativen Pfad.
Das klappt aber auch nicht - jedenfalls nicht bei mir.
Gruß, Alex
[1a] http://unix.stackexchange.com/questions/22842/tar-with-relative-paths
[1b]
[2] http://www.ostc.de/howtos/unix-backup-HOWTO.txt
[3]
http://www.linuxquestions.org/questions/linux-software-2/tar-archive-file-need-relative-path-374755/
Hallo Alex,

wenn Du vorher in das Verzeichnis wechselst, musst Du danach bei den zu
sichernden Dateien mit relativen Pfaden arbeiten, also

tar -czf /srv/mysql/.backup/test.tar -C /srv/mysql *

oder
cd /srv/mysql
tar -czf /srv/mysql/.backup/test.tar *

(das steht bei Deiner Quelle [1a] )

Gruß, Christian
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Joerg Thuemmler
2013-12-17 11:29:00 UTC
Permalink
Post by Uwe Eggert
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
tar: 2013_12_15: Cannot stat: No such file or directory
tar: 2013_12_16: Cannot stat: No such file or directory
tar: 2013_12_17: Cannot stat: No such file or directory
tar: test.tar: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Ich möchte erreichen, dass alle (sichtbaren) Dateien im Verzeichnis
"/srv/mysql" in die Datei "/srv/mysql/.backup/test.tar" gespeichert
werden. Mit "tar -jPcvf /srv/mysql/.backup/test.tar /srv/mysql/*"
erreiche ich das Ziel zwar auch - aber eben mit den absoluten Pfaden.
Da -C auf diversen Seiten empfohlen wird und -C über man tar das
Richtige zu sein scheint, muss der Fehler also bei mir liegen.
Gruß, Alex
Hi,
tar -Schalter Archiv Datei Datei
dann wäre der Befehl nämlich falsch.
Gruß
Uwe Eggert
Hi,

Du brauchst (wenn nicht aus anderen Gründen) gar keinen "Schalter"
(option) nur den Operator -c; tar macht es genau so, wie Du es willst

cd /
tar -cvf /srv/mysql/.backup/test.tar /srv/mysql/*

ergibt im Archiv Namen wie "srv/mysql/data/..."

(siehe info tar)
"-P" schaltet gerade absolute Pfade ein.
Wenn Du allerdings Namen wie "/srv/mysql/data/..." im Archiv als
"data/..." sehen willst, musst Du einfach in /srv/mysql wechseln und dort
tar -cvf .backup/test.tar * aufrufen.

cu jth
--
www.teddylinx.de
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Roman Fietze
2013-12-17 11:19:15 UTC
Permalink
Hallo Alex,
Post by Alex Winzer
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Unter POSIX/Linux/UNIX wir der Stern '*' von der Shell aufgeloest,
d.h. an dieser Stelle uebergibst du schon mal eine Liste der
sichtbaren Dateien im aktuellen PWD.

Wie waere fuer dich

tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar.gz .

???


Roman
--
Roman Fietze Telemotive AG Buero Muehlhausen
Breitwiesen 73347 Muehlhausen
Tel.: +49(0)7335/18493-45 http://www.telemotive.de
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-17 12:20:11 UTC
Permalink
Hallo,
tar -C/srv/mysql/ -zPcvf/srv/mysql/.backup/test.tar.gz
Das klappt leider auch nicht. Bei mir kommt da die Fehlermeldung
tar: Cowardly refusing to create an empty archive
Try `tar --help' or `tar --usage' for more information.

Und wenn ich tar -C/srv/mysql/* -zPcvf/srv/mysql/.backup/test.tar.gz
eingebe, dann erhalte ich wieder die absoluten Pfade und - was ich mir
überhaupt nicht erklären kann - es fehlt ein Verzeichnis. Es gibt 5
Verzeichnisse (ohne .backup) und eines fehlt, was sonst immer mit
gepackt wurde...

Ich habe eine Methode gefunden, die ich aber nicht gern benutzen möchte.
Man wechselt erst in das (Stamm)Verzeichnis /srv/mysql und ruft dann
"tar -zPcvf /srv/mysql/.backup/test.tar.gz *" auf. Mich stört aber das
"cd", denn es könnte ja auch mal schiefgehen, es ist unsauber etc. pp.

Gruß, Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
David Haller
2013-12-17 17:35:57 UTC
Permalink
Hallo,
Post by Alex Winzer
Und wenn ich tar -C/srv/mysql/* -zPcvf/srv/mysql/.backup/test.tar.gz
eingebe, dann erhalte ich wieder die absoluten Pfade und - was ich
mir überhaupt nicht erklären kann - es fehlt ein Verzeichnis. Es gibt
5 Verzeichnisse (ohne .backup) und eines fehlt, was sonst immer mit
gepackt wurde...
Du mußt dir klarmachen, daß die SHELL den * expandiert, _nicht_ tar.
Du übergibst also an tar:

tar -C/srv/mysql/ /srv/mysql/a /srv/mysql/b .. /srv/mysql/x \
-zPcvf /srv/mysql/.backup/test.tar.gz

Das hättest du auch selber gemerkt, wenn du mal 'set -x' machen
würdest und sehen würdest, wie du tar aufrufst.
Post by Alex Winzer
Ich habe eine Methode gefunden, die ich aber nicht gern benutzen
möchte. Man wechselt erst in das (Stamm)Verzeichnis /srv/mysql und
ruft dann "tar -zPcvf /srv/mysql/.backup/test.tar.gz *" auf. Mich
stört aber das "cd", denn es könnte ja auch mal schiefgehen, es ist
unsauber etc. pp.
( cd /srv/mysql && tar -cvzf /srv/mysql/.backup/test.tar.gz * ; )

oder:

tar -C /srv/mysql --exclude='./.*' -cvzf /srv/mysql/.backup/test.tar.gz .

oder:

find /srv/mysql -not -name '.*' -printf '%P\0' | \
tar -cvzf /srv/mysql/.backup/test.tar.gz --null -T-

das läßt aber auch alle anderen .* aus die in Unterverzeichnissen
liegen, dagegen hülfe dann z.B.

find /srv/mysql/ -maxdepth 1 -not -regex '/srv/mysql/\..*' -printf '%P\0' | \
tar -C /srv/mysql -cvzf /srv/mysql/.backup/test.tar.gz --null -T-

bzw.:

find /srv/mysql/ -type f -not -regex '/srv/mysql/\..*' -printf '%P\0' | \
tar -C /srv/mysql -cvzf /srv/mysql/.backup/test.tar.gz --null -T-


HTH,
-dnh
--
Post by Alex Winzer
use lib "/path/to/perl/modules";
Single or double quotes?
Yes. -- Tad McClellan in comp.lang.perl.misc
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-17 12:25:43 UTC
Permalink
Hallo,
Post by Roman Fietze
Hallo Alex,
Post by Alex Winzer
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Unter POSIX/Linux/UNIX wir der Stern '*' von der Shell aufgeloest,
d.h. an dieser Stelle uebergibst du schon mal eine Liste der
sichtbaren Dateien im aktuellen PWD.
Wie waere fuer dich
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar.gz .
???
Ne, das wäre nicht gut.
Bei genauem Hinsehen besteht das Problem, dass das zu backupende
Verzeichnis auch das Backup-Verzeichnis enthält. Die Verzeichnisse von
MySQL sind alle sichtbar. Das nutze ich insoweit bewusst aus.
Nähme ich jetzt den '.', dann würde ich mit jedem neuen Backup die
bereits bestehenden Backups mit sichern.

Gruß, Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Joerg Thuemmler
2013-12-17 13:02:51 UTC
Permalink
Post by Alex Winzer
Hallo,
Post by Roman Fietze
Hallo Alex,
Post by Alex Winzer
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Unter POSIX/Linux/UNIX wir der Stern '*' von der Shell aufgeloest,
d.h. an dieser Stelle uebergibst du schon mal eine Liste der
sichtbaren Dateien im aktuellen PWD.
Wie waere fuer dich
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar.gz .
???
Ne, das wäre nicht gut.
Bei genauem Hinsehen besteht das Problem, dass das zu backupende
Verzeichnis auch das Backup-Verzeichnis enthält. Die Verzeichnisse von
MySQL sind alle sichtbar. Das nutze ich insoweit bewusst aus.
Nähme ich jetzt den '.', dann würde ich mit jedem neuen Backup die
bereits bestehenden Backups mit sichern.
Gruß, Alex
Hi,

ich muss mich wiederholen: -P (=--absolute-names) tut genau das:
absolute Pfadnamen speichern (und ggf. auch ".."-Namen!).

Auch das ist aber kein Problem, denn beim extrahieren streicht tar den
"/" auch wieder (außer Du gibst da auch ein "-P" mit). Du kannst
absolute Pfadnamen also ruhig mitsichern...

Die Problematik "Arbeitsverzeichnis" lässt sich evt, durch -C <dir> oder
--directory=<dir> lösen, das spart das "cd". Allerdings musst Du dann
bei der Angabe der zu sichernden Daten aufpassen, weil "*" sich dann
immer noch auf das aktuelle Verzeichnis bezieht. Ich würde ein cd
vorziehen und ggf mit "pwd" testen, dass ich an der richtigen Stelle bin...

Um es klarzustellen, das ist GNU tar, es gibt andere, bei denen die
Pfadgeschichte evt. anders läuft.

cu jth
--
www.teddylinx.de
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Christian Pelz
2013-12-17 15:01:58 UTC
Permalink
Post by Alex Winzer
Hallo,
Post by Roman Fietze
Hallo Alex,
Post by Alex Winzer
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Unter POSIX/Linux/UNIX wir der Stern '*' von der Shell aufgeloest,
d.h. an dieser Stelle uebergibst du schon mal eine Liste der
sichtbaren Dateien im aktuellen PWD.
Wie waere fuer dich
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar.gz .
???
Ne, das wäre nicht gut.
Bei genauem Hinsehen besteht das Problem, dass das zu backupende
Verzeichnis auch das Backup-Verzeichnis enthält. Die Verzeichnisse von
MySQL sind alle sichtbar. Das nutze ich insoweit bewusst aus.
Nähme ich jetzt den '.', dann würde ich mit jedem neuen Backup die
bereits bestehenden Backups mit sichern.
Gruß, Alex
Am 17.12.2013 13:25, schrieb Alex Winzer:> Hallo,
Post by Alex Winzer
Post by Roman Fietze
Hallo Alex,
Post by Alex Winzer
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Unter POSIX/Linux/UNIX wir der Stern '*' von der Shell aufgeloest,
d.h. an dieser Stelle uebergibst du schon mal eine Liste der
sichtbaren Dateien im aktuellen PWD.
Wie waere fuer dich
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar.gz .
???
Ne, das wäre nicht gut.
Bei genauem Hinsehen besteht das Problem, dass das zu backupende
Verzeichnis auch das Backup-Verzeichnis enthält. Die Verzeichnisse von
MySQL sind alle sichtbar. Das nutze ich insoweit bewusst aus.
Nähme ich jetzt den '.', dann würde ich mit jedem neuen Backup die
bereits bestehenden Backups mit sichern.
Gruß, Alex
Hallo Alex,

ich hab da mal ein bisschen rumprobiert bei mir.

Am einfachsten wäre es, wenn Du vorher mit

cd /srv/mysql

in das Verzeichnis wechselst und dann

tar -cf .backup/test.tar *

ausführst. Dann werden alle Dateien in /srv/mysql, die auf das Muster *
passen, mit relativen Pfadnamen gesichert. '.backup' passt nicht und ist
nicht in der Sicherung.

Wenn Du 'cd /srv/mysql' nicht machen willst, musst Du natürlich in
Deinem Aufruf von tar irgendwo die absoluten Pfadnamen angeben, damit
tar überhaupt die richtigen Dateien sichert. Bei der Angabe des Archivs
ist das kein Problem, aber bei der Angabe der zu sichernden Dateien: Die
sichert tar anscheinend so, wie sie auf der Kommandozeile stehen - dann
also mit absolutem Pfad:

tar -cf /srv/mysql/.backup/test.tar /srv/mysql/*

führt dazu, dass volle Pfadnamen gespeichert werden - auch wenn du mit
-C /srv/mysql dorthin wechselst.

Wenn du mit

tar -cf /srv/mysql/.backup/test.tar -C /srv/mysql *

arbeitest, dann beschwert sich tar, dass es die Dateien, die bash ihm
anstelle des '*' übergibt, in /srv/mysql nicht findet - die sind nämlich
nur in deinem Arbeitserzeichnis zu finden.

tar -cf /srv/mysql/.backup/test.tar /srv/mysql

sichert alle Dateien in /srv/mysql mit relativen Pfadnamen, aber eben
*alle* Dateien, also auch .backup. Ggf. könntest du da mit --exclude=
arbeiten.

Eine Lösung wäre

tar -cf /srv/mysql/.backup/test.tar -C /srv/mysql $(ls /srv/mysql)

Dann übergibt die shell an tar die Liste der Dateien in /srv/mysql, aber
mit relativen Pfadnamen. Versteckte Dateien zeigt ls bekanntlich
normalerweise nicht an, es sei denn, du hast da default-Einstellungen
verändert.

Klappt das bei Dir?

Gruß, Christian
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-17 16:17:14 UTC
Permalink
Hallo,

erstmal danke für die überwältigend zahlreichen Antworten.
Post by Roman Fietze
Post by Roman Fietze
Post by Alex Winzer
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Unter POSIX/Linux/UNIX wir der Stern '*' von der Shell aufgeloest,
d.h. an dieser Stelle uebergibst du schon mal eine Liste der
sichtbaren Dateien im aktuellen PWD.
Wie waere fuer dich
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar.gz .
[...]
Hallo Alex,
ich hab da mal ein bisschen rumprobiert bei mir.
Am einfachsten wäre es, wenn Du vorher mit
cd /srv/mysql
in das Verzeichnis wechselst und dann
tar -cf .backup/test.tar *
ausführst. Dann werden alle Dateien in /srv/mysql, die auf das Muster *
passen, mit relativen Pfadnamen gesichert. '.backup' passt nicht und ist
nicht in der Sicherung.
Wenn Du 'cd /srv/mysql' nicht machen willst, musst Du natürlich in
Deinem Aufruf von tar irgendwo die absoluten Pfadnamen angeben, damit
tar überhaupt die richtigen Dateien sichert. Bei der Angabe des Archivs
ist das kein Problem, aber bei der Angabe der zu sichernden Dateien: Die
sichert tar anscheinend so, wie sie auf der Kommandozeile stehen - dann
tar -cf /srv/mysql/.backup/test.tar /srv/mysql/*
führt dazu, dass volle Pfadnamen gespeichert werden - auch wenn du mit
-C /srv/mysql dorthin wechselst.
Wenn du mit
tar -cf /srv/mysql/.backup/test.tar -C /srv/mysql *
arbeitest, dann beschwert sich tar, dass es die Dateien, die bash ihm
anstelle des '*' übergibt, in /srv/mysql nicht findet - die sind nämlich
nur in deinem Arbeitserzeichnis zu finden.
tar -cf /srv/mysql/.backup/test.tar /srv/mysql
sichert alle Dateien in /srv/mysql mit relativen Pfadnamen, aber eben
*alle* Dateien, also auch .backup. Ggf. könntest du da mit --exclude=
arbeiten.
Eine Lösung wäre
tar -cf /srv/mysql/.backup/test.tar -C /srv/mysql $(ls /srv/mysql)
Dann übergibt die shell an tar die Liste der Dateien in /srv/mysql, aber
mit relativen Pfadnamen. Versteckte Dateien zeigt ls bekanntlich
normalerweise nicht an, es sei denn, du hast da default-Einstellungen
verändert.
Klappt das bei Dir?
Leider nicht.
ls gibt - warum auch immer - auch .backup mit aus und ich habe eine
Rekursion. Allerdings ist tar _schlau_, erkennt das und bricht ab. Mal
großes Lob an die Entwickler an dieser Stelle! Ich schwöre auch, dass
ich nichts an den Einstellungen von ls geändert habe. Ich wüsste nicht
einmal, wo ich das machen müsste.

Ich würde es also gern mit "cd" und anschließendem "pwd" lösen.
Jetzt besteht aber das Problem, dass es "cd" nicht tut. Ich habe eine
Datei mit den Attributen 777 im Verzeichnis /usr/local/bin mit folgendem
Inhalt abgelegt:

#!/bin/bash
cd /srv/mysql
#EOF

Wenn ich die auf der Konsole ausführe, würde ich erwarten, dass ich -
egal wo auch immer ich mich befinde - in das Verzeichnis /srv/mysql
wechsle. Gebe ich direkt "cd /srv/mysql" ein, klappt das auch. Eine
Fehlermeldung bekomme ich nicht. Um Schreibfehler auszuschließen, habe
ich mit Copy & Paste gearbeitet. Das klappt weder auf openSUSE 12.3
64bit, noch auf 13.1 32bit.

Was bedeutet das jetzt?

Gruß, Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Christian Boltz
2013-12-17 16:34:20 UTC
Permalink
Hallo Alex, hallo Leute,
Post by Alex Winzer
ls gibt - warum auch immer - auch .backup mit aus und ich habe eine
Rekursion. Allerdings ist tar _schlau_, erkennt das und bricht ab. Mal
großes Lob an die Entwickler an dieser Stelle! Ich schwöre auch, dass
ich nichts an den Einstellungen von ls geändert habe. Ich wüsste
nicht einmal, wo ich das machen müsste.
Ich würde es also gern mit "cd" und anschließendem "pwd" lösen.
Jetzt besteht aber das Problem, dass es "cd" nicht tut. Ich habe eine
Datei mit den Attributen 777 im Verzeichnis /usr/local/bin mit
#!/bin/bash
cd /srv/mysql
#EOF
Wenn ich die auf der Konsole ausführe, würde ich erwarten, dass ich -
egal wo auch immer ich mich befinde - in das Verzeichnis /srv/mysql
wechsle. Gebe ich direkt "cd /srv/mysql" ein, klappt das auch. Eine
Fehlermeldung bekomme ich nicht. Um Schreibfehler auszuschließen, habe
ich mit Copy & Paste gearbeitet. Das klappt weder auf openSUSE 12.3
64bit, noch auf 13.1 32bit.
Was bedeutet das jetzt?
Du testest falsch ;-)

Probier mal folgendes Script:

#!/bin/bash
cd /srv/mysql
pwd
#EOF

Das wird Dir garantiert /srv/mysql melden ;-)

Grund: Das Script startet in einer neuen bash-Instanz, tut dort, was ihm
befohlen wird, und beendet sich dann zusammen mit "seiner" bash.
Danach landest Du wieder in der bash, von der aus Du das Script
aufgerufen hast - und die hat wenig überraschend nichts vom
Verzeichniswechsel mitbekommen.

Die Bestätigung, dass das Script wirklich in einer eigenen bash-Instanz
läuft, kannst Du Dir mit "echo $$" abholen - einmal im Script, einmal
direkt in der bash aufrufen.


Zu Deinem eigentlichen Problem:

cd /srv/mysql && tar czf .backup/irgendwas.tar.gz *

(tar wird dank des && nur ausgeführt, wenn das cd funktioniert hat - und
pwd-Aufrufe sind eh überflüssig (außer fürs Debugging) ;-)


Gruß

Christian Boltz
--
hallern: Seine Linux-Distri so gut beherrschen, dass man alle
sicherheitsrelevatne Patches selber vornehmen und damit die Distri auch
ohne den Distributor aktuell halten kann -> s. Haller, David ;-)))
[Michael Höhne in suse-linux]
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Martin Deppe
2013-12-17 16:37:57 UTC
Permalink
Post by Alex Winzer
Leider nicht.
ls gibt - warum auch immer - auch .backup mit aus und ich habe eine Rekursion. Allerdings ist tar _schlau_, erkennt das und bricht ab. Mal großes Lob an die Entwickler an dieser Stelle! Ich schwöre auch, dass ich nichts an den Einstellungen von ls
geändert habe. Ich wüsste nicht einmal, wo ich das machen müsste.
Ich würde es also gern mit "cd" und anschließendem "pwd" lösen.
#!/bin/bash
cd /srv/mysql
#EOF
Wenn ich die auf der Konsole ausführe, würde ich erwarten, dass ich - egal wo auch immer ich mich befinde - in das Verzeichnis /srv/mysql wechsle. Gebe ich direkt "cd /srv/mysql" ein, klappt das auch. Eine Fehlermeldung bekomme ich nicht. Um
Schreibfehler auszuschließen, habe ich mit Copy & Paste gearbeitet. Das klappt weder auf openSUSE 12.3 64bit, noch auf 13.1 32bit.
Was bedeutet das jetzt?
Gruß, Alex
Hi Alex,

Nein, tut es nicht. Ich tippe mal darauf, dass die bash, die Du aufrufst, dorthin wechselt, die Shell, in der Du dies tust allerdings nicht!

Statt eine solche Datei zu erstellen, empfehle ich Dir, einen Alias in der '.profile' oder '.bashrc' (im Home) einzurichten: "alias cdms='cd /srv/mysql'". So mache ich es immer und das funkt super!

Gruß
Martin
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
h***@t-online.de
2013-12-17 12:09:54 UTC
Permalink
Ale Winzer schrieb:

Hallo,

ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.

Wenn ich folgendes eingebe, sieht das am Ende so aus:

tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *

Hallo Alex,

ich versuche normalerweise nach dem Schema

tar -cf Datei -C /irgendwo -r .

d.h. tar sichert ab dem Verzeichnis . rekursiv.
Das sollte auch für mysql so ähnlich passen
(Berechtigungen, Datum beibehalten?)

Viele Grüsse
Wolfgang Hamann
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Norbert Zawodsky
2013-12-18 09:13:20 UTC
Permalink
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings klappt
es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Hallo Alex,
ich versuche normalerweise nach dem Schema
tar -cf Datei -C /irgendwo -r .
d.h. tar sichert ab dem Verzeichnis . rekursiv.
Das sollte auch für mysql so ähnlich passen
(Berechtigungen, Datum beibehalten?)
Viele Grüsse
Wolfgang Hamann
Hallo OP,

geht jetzt an Deiner ursprünglichen Frage vorbei, und ich will mich auch
nicht "einmischen". Aber ...

Bist Du sicher dass Du mysql's interne Dateien auf diese Art sichern willst?
Ich hätte dabei kein gutes Gefühl.

Meine DB backups mache ich regelmäßig (cron) mit mysqldump
Damit bekomme ich einen "sicher konsistenten" Stand. Und nachdem das
Ergebnis eine sql Datei ist (Text) lässt sie sich auch unglaublich gut
packen / zippen / was auch immer.

Meine 2 Cent..

Grüße
Norbert
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-18 10:35:19 UTC
Permalink
Hallo,
Post by Norbert Zawodsky
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings
klappt es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Hallo OP,
geht jetzt an Deiner ursprünglichen Frage vorbei, und ich will mich auch
nicht "einmischen". Aber ...
Bist Du sicher dass Du mysql's interne Dateien auf diese Art sichern willst?
Ich hätte dabei kein gutes Gefühl.
Meine DB backups mache ich regelmäßig (cron) mit mysqldump
Damit bekomme ich einen "sicher konsistenten" Stand. Und nachdem das
Ergebnis eine sql Datei ist (Text) lässt sie sich auch unglaublich gut
packen / zippen / was auch immer.
Das weiß ich zu schätzen und habe mir mysqldump auch gleich mal
angesehen. Ich habe aber ein Problem damit, das Passwort an mysqldump zu
liefern. Wenn ich das aufrufen lassen, muss ich es irgendwo im Klartext
zu stehen haben. Auch in my.cnf (über Suchmaschine gefunden) würde es im
Klartext stehen.
Wie löst man das Problem?

Alternativ könnte man auch darüber nachdenken, folgendes zu machen:

systemctl stop mysql
sync
[... das eigentliche Backup]
systemctl start mysql

Gruß, Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Norbert Zawodsky
2013-12-18 10:53:42 UTC
Permalink
Post by Alex Winzer
Hallo,
Post by Norbert Zawodsky
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings
klappt es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Hallo OP,
geht jetzt an Deiner ursprünglichen Frage vorbei, und ich will mich auch
nicht "einmischen". Aber ...
Bist Du sicher dass Du mysql's interne Dateien auf diese Art sichern willst?
Ich hätte dabei kein gutes Gefühl.
Meine DB backups mache ich regelmäßig (cron) mit mysqldump
Damit bekomme ich einen "sicher konsistenten" Stand. Und nachdem das
Ergebnis eine sql Datei ist (Text) lässt sie sich auch unglaublich gut
packen / zippen / was auch immer.
Das weiß ich zu schätzen und habe mir mysqldump auch gleich mal
angesehen. Ich habe aber ein Problem damit, das Passwort an mysqldump
zu liefern. Wenn ich das aufrufen lassen, muss ich es irgendwo im
Klartext zu stehen haben. Auch in my.cnf (über Suchmaschine gefunden)
würde es im Klartext stehen.
Wie löst man das Problem?
systemctl stop mysql
sync
[... das eigentliche Backup]
systemctl start mysql
Gruß, Alex
Jaja, die Sache mit dem Passwort ... Gefällt mir auch nicht so wahnsinnig.

Allerdings habe ich es, wie gesagt, in einem cron-job stehen. Und dieses
script (/usr/lib/cron/backup_mysql) kann zumindest nur root lesen (owner
root, mode 700). Und root vertraue ich ein wenig ;-)

Ich habe allerdings im mysql einen eigenen "backup-user" angelegt, der
auf die betreffenden Datenbanken ausschließlich Leserechte hat, also
zumindest nichts "zerstören" kann.

Norbert
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-18 11:06:01 UTC
Permalink
Hallo Norbert,
Post by Norbert Zawodsky
Post by Alex Winzer
Hallo,
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings
klappt es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
<OT>
Post by Norbert Zawodsky
Post by Alex Winzer
Das weiß ich zu schätzen und habe mir mysqldump auch gleich mal
angesehen. Ich habe aber ein Problem damit, das Passwort an mysqldump
zu liefern. Wenn ich das aufrufen lassen, muss ich es irgendwo im
Klartext zu stehen haben. Auch in my.cnf (über Suchmaschine gefunden)
würde es im Klartext stehen.
Wie löst man das Problem?
systemctl stop mysql
sync
[... das eigentliche Backup]
systemctl start mysql
Jaja, die Sache mit dem Passwort ... Gefällt mir auch nicht so wahnsinnig.
Allerdings habe ich es, wie gesagt, in einem cron-job stehen. Und dieses
script (/usr/lib/cron/backup_mysql) kann zumindest nur root lesen (owner
root, mode 700). Und root vertraue ich ein wenig ;-)
Das ist auch bei mir so.
Post by Norbert Zawodsky
Ich habe allerdings im mysql einen eigenen "backup-user" angelegt, der
auf die betreffenden Datenbanken ausschließlich Leserechte hat, also
zumindest nichts "zerstören" kann.
Das werde ich auch tun, nachdem ich an der Methode einen Narren
gefressen habe: Die 1:1-Sicherung der Dateien braucht pro Tag aktuell 24
MB. Mit mysqldump sind es bloß noch ca. 7 MB und wenn ich das noch dem
tar übergebe, werden daraus lächerliche 700 KB und in einer einzigen,
lesbaren Datei ganz übersichtlich ist es auch noch.
Einfach genial!

Danke sagt
Alex
</OT>

Habe es trotzdem wegen der Vollständigkeit wieder an die Liste geschickt ;-)
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Joerg Thuemmler
2013-12-18 13:21:12 UTC
Permalink
Post by Alex Winzer
Hallo,
Post by Norbert Zawodsky
Post by Alex Winzer
Hallo,
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert. Allerdings
klappt es nicht so, wie es soll.
tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *
Hallo OP,
geht jetzt an Deiner ursprünglichen Frage vorbei, und ich will mich auch
nicht "einmischen". Aber ...
Bist Du sicher dass Du mysql's interne Dateien auf diese Art sichern willst?
Ich hätte dabei kein gutes Gefühl.
Meine DB backups mache ich regelmäßig (cron) mit mysqldump
Damit bekomme ich einen "sicher konsistenten" Stand. Und nachdem das
Ergebnis eine sql Datei ist (Text) lässt sie sich auch unglaublich gut
packen / zippen / was auch immer.
Das weiß ich zu schätzen und habe mir mysqldump auch gleich mal
angesehen. Ich habe aber ein Problem damit, das Passwort an mysqldump zu
liefern. Wenn ich das aufrufen lassen, muss ich es irgendwo im Klartext
zu stehen haben. Auch in my.cnf (über Suchmaschine gefunden) würde es im
Klartext stehen.
Wie löst man das Problem?
systemctl stop mysql
sync
[... das eigentliche Backup]
systemctl start mysql
Gruß, Alex
Hi,

ich weiß nicht, wie das bei mysql läuft, weil ich postgreSQL nutze. Aber
ich könnte mir vorstellen, dass es da auch geht:

Als root kann ich pg_dump -U <user> <database> aufrufen, ohne nach einem
Passwort gefragt zu werden;

ich habe gesehen, dass mysqldump auch eine Option -u (--user=) hat, ich
nehme an, dass der Mechanismus ähnlich ist...

d.h., wenn Dein Backupscript als root läuft, muss nirgends ein Passwort
stehen...

cu jth
--
www.teddylinx.de
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-18 13:46:44 UTC
Permalink
Hallo,
Post by Joerg Thuemmler
Hi,
ich weiß nicht, wie das bei mysql läuft, weil ich postgreSQL nutze. Aber
Als root kann ich pg_dump -U <user> <database> aufrufen, ohne nach einem
Passwort gefragt zu werden;
ich habe gesehen, dass mysqldump auch eine Option -u (--user=) hat, ich
nehme an, dass der Mechanismus ähnlich ist...
Ist leider _bei mir_ nicht so. Ich habe es gerade ausprobiert.

Das "bei mir" habe ich bewusst unterstrichen, weil mysqldump auch sonst
nicht so arbeitet wie es sollte und das evtl. nur bei mir der Fall ist.

Wie bereits aus dem geänderten Subjekt ersichtlich ist, ging ich davon
aus, dass mysqldump mit dem Schalter --all-databases alles Datenbanken
und alle Tabellen sichert - das volle Programm eben. So steht es z.B.
auch hier [1].
Leider scheint das nicht der Fall zu sein. Bevor ich mich auf ein Backup
verlasse, test ich die Widerherstellung. Dabei habe gemerkt, dass
mysqldump _bei mir_ nur die erste Datenbak sichert. Dort zwar alle
Tabellen aber es fehlen die restlichen 4 Datenbanken. Username und
Passwort sind für alle DB/Tabellen gleich.

Mein vollständiger Befehl dazu sieht so aus:
mysqldump --all-databases --lock-all-tables -u$username -p$password >
$dumpfile

Was mache ich jetzt schon wieder verkehrt?

Gruß, Alex

[1] http://griessmeier.de/linux/mysql_backup.htm
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-18 13:53:22 UTC
Permalink
Ich nehme die Frage zurück und hoffe, es hat noch niemand seinen
wertvollen Hirnschmalz vergeudet.
Eine Tabelle ist kaputt bzw. fehlt. Da kommt mysqldump nicht drüber
hinweg. Mit --force klappt auch das. Entschuldigung!
Post by Alex Winzer
Hallo,
Post by Joerg Thuemmler
Hi,
ich weiß nicht, wie das bei mysql läuft, weil ich postgreSQL nutze. Aber
Als root kann ich pg_dump -U <user> <database> aufrufen, ohne nach einem
Passwort gefragt zu werden;
ich habe gesehen, dass mysqldump auch eine Option -u (--user=) hat, ich
nehme an, dass der Mechanismus ähnlich ist...
Ist leider _bei mir_ nicht so. Ich habe es gerade ausprobiert.
Das "bei mir" habe ich bewusst unterstrichen, weil mysqldump auch sonst
nicht so arbeitet wie es sollte und das evtl. nur bei mir der Fall ist.
Wie bereits aus dem geänderten Subjekt ersichtlich ist, ging ich davon
aus, dass mysqldump mit dem Schalter --all-databases alles Datenbanken
und alle Tabellen sichert - das volle Programm eben. So steht es z.B.
auch hier [1].
Leider scheint das nicht der Fall zu sein. Bevor ich mich auf ein Backup
verlasse, test ich die Widerherstellung. Dabei habe gemerkt, dass
mysqldump _bei mir_ nur die erste Datenbak sichert. Dort zwar alle
Tabellen aber es fehlen die restlichen 4 Datenbanken. Username und
Passwort sind für alle DB/Tabellen gleich.
mysqldump --all-databases --lock-all-tables -u$username -p$password >
$dumpfile
Was mache ich jetzt schon wieder verkehrt?
Gruß, Alex
[1] http://griessmeier.de/linux/mysql_backup.htm
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Robert Großkopf
2013-12-18 14:39:09 UTC
Permalink
Hallo Alex,

auch wenn es jetzt nicht mehr ganz passt:
Ich habe zur Sicherung zwei *.sh-dateien hier abgelegt:

alle_dbs.sh
-------------
#!/bin/bash
MYSQL_PWD="passwort" mysqldump -u username -l --all-databases >
/home/username/Dokumente/datenbanken_save/datenbanken.$(date
"+%y%m%d-%H%M").sql
--------------

einzelne_dbs.sh
-------------
#!/bin/bash
MYSQL_PWD="passwort" mysqldump -u username -l db1 >
/home/username/Dokumente/datenbanken_save/db1.$(date "+%y%m%d-%H%M").sql;
MYSQL_PWD="passwort" mysqldump -u username -l db2 >
/home/username/Dokumente/datenbanken_save/db2.$(date "+%y%m%d-%H%M").sql;
-----------

Da sichere ich dann recht regelmäßig meine DBs und ziehe die
anschließend noch auf die externe Platte.

Gruß

Robert
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Martin Deppe
2013-12-17 17:54:02 UTC
Permalink
Hallo Alex,

Ich gebe meine Senf auch nochmal dazu (da ich ihn schon geschrieben und abgeschickt hatte).

Dein ursprüngliches Kommando war ja so:
"tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar *"

Ich gehe also mal davon aus, dass Du relative Pfadangaben auch ohne './' haben möchtest, weshalb Du die nächstgelegene korrekte Lösung nicht nehmen willst:
"tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar .".

Es funktioniert aber z.B. so so, wie Du es möchtest:
"tar -C /srv/mysql/ -zPcvf /srv/mysql/.backup/test.tar $(cd /srv/mysql && ls *)".

Dann nämlich wird der '*' erst in dem Verzeichnis aufgelöst, in dem alle Dateisystemobjekte sind, die Du willst.

Aber Christians (noch einfacherer) Vorschlag geht auch:
"cd /srv/mysql && tar czf .backup/irgendwas.tar.gz *".

Auch da wird '*' erst an der richtigen Stelle substituiert.

Gruß
Martin
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Alex Winzer
2013-12-18 06:45:02 UTC
Permalink
Ein _riesen Dank_ an alle fleißigen Helfer, die mir so nett bei der
Lösung meines Problems geholfen haben. Ich habe mir jetzt folgende
Lösung erarbeitet, die ich der Vollständigkeit halber auch für das
Archiv posten möchte:

#!/bin/bash

backup='.backup/'`date +%Y_%m_%d`'.tar'
delete='.backup/'`date -d "-7 days" +%Y_%m_%d`'.tar'

cd /srv/mysql
if [ `pwd` = '/srv/mysql' ]; then
if [ \! -e $backup ]; then
tar cjf $backup *
rm --force $delete
fi
fi

#EOF

Um "Irritationen" zu vermeiden prüfe ich neben dem Pfad auch noch, ob
das Archiv schon existiert. Evtl. ginge es noch besser. Aber für meine
Belange reicht das. Im Moment lasse ich parallel auch noch eine einfache
Sicherung der Dateien mitlaufen. Wenn das mit dem Archivieren/Löschen
nach einer Woche klappt, wird das aber ausgeknipst.

Einen schönen dritten Advent wünscht

Alex
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
David Haller
2013-12-19 21:45:29 UTC
Permalink
Hallo,
Post by Alex Winzer
Ein _riesen Dank_ an alle fleißigen Helfer, die mir so nett bei der
Lösung meines Problems geholfen haben.
Hast du auch die "richtigen" Lösungen von mir ausprobiert bzw. v.a.
nachvollzogen warum deine Ansätze nicht funktioniert haben?
Post by Alex Winzer
#!/bin/bash
backup='.backup/'`date +%Y_%m_%d`'.tar'
delete='.backup/'`date -d "-7 days" +%Y_%m_%d`'.tar'
cd /srv/mysql
if [ `pwd` = '/srv/mysql' ]; then
if cd /srv/mysql; then
Post by Alex Winzer
if [ \! -e $backup ]; then
tar cjf $backup *
Wenn du mit bzip2 komprimierst solltest du evtl. auch noch die
Archivnamen passende um ein ".bz2" ergänzen ;)
Post by Alex Winzer
rm --force $delete
fi
fi
#EOF
HTH,
-dnh
--
"Anybody who really thinks /bin/true should report a version number and
a help string (or even a copyright notice) needs to get his head examined."
-- Linus Torvalds
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Rainer Sokoll
2013-12-22 23:56:28 UTC
Permalink
Am 2013-12-17 10:36, schrieb Alex Winzer:

Guten Morgen,
Post by Alex Winzer
ich möchte gern den Inhalt eines Verzeichnisses mit relativen Pfaden
mittels tar sichern. Ich habe selbst schon etwas rumgesucht und den
Schalter -C als möglichen Heilsbringer identifiziert.
Angesichts der Uhrzeit habe ich nicht den ganzen Thread gelesen, deshalb
bitte ich um Verzeihung, falls die nächstliegende Idee schon kam:

cd /
tar -cjf mein.tar.bz2 ./relativer/Pfad

Rainer
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
opensuse-de+***@opensuse.org
Um den Listen Administrator zu erreichen, schicken
Sie eine Mail an: opensuse-de+***@opensuse.org
Loading...