
Hallo, erstmal danke für die überwältigend zahlreichen Antworten. On 17.12.2013 16:01, Christian Pelz wrote:
Am 17.12.2013 13:25, schrieb Alex Winzer:
On 17.12.2013 12:19, Roman Fietze wrote:
On Tue, 17.12.2013 10:36:30 Alex Winzer wrote:
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 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?
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+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org