Unix tar.gz
Hallo Forum,
eine Frage aus dem Bereich tar.gz.
Hab eine Struktur, die nie gesichert wird soweit nichts verändert wurde.
Wenn eine Datei bearbeitet wird, dann wird dem Dateinamen ein ! vorangestellt.
Beispiel:
Entwurf-2011.xls -> unverändert
wird die Datei vom Benutzer verändert,wird sie in !Entwurf-2011.xls umbenannt.
Jede Nach läuft eine Sicherung per tar.gz und es wird alles gepackt.
Nun soll es so verändert werden,daß nur Dateien die ein ! vorangestellt ahben gesichert werden, der Rest nicht mehr.
tar cvzf archivsicherung.tar.tgz /dateiablage/!*.*
klappt nicht, wie muß ich es verändern ?
Klappt es nicht mit dem !, muß ich da ein anderes Zeichen verwenden ? Ich möchte abscihtlich nicht mit RSYnc arbeiten, es sollen nur die umbenannten Dateien gepackt werden...
Gruß und Danke
Stefan
eine Frage aus dem Bereich tar.gz.
Hab eine Struktur, die nie gesichert wird soweit nichts verändert wurde.
Wenn eine Datei bearbeitet wird, dann wird dem Dateinamen ein ! vorangestellt.
Beispiel:
Entwurf-2011.xls -> unverändert
wird die Datei vom Benutzer verändert,wird sie in !Entwurf-2011.xls umbenannt.
Jede Nach läuft eine Sicherung per tar.gz und es wird alles gepackt.
Nun soll es so verändert werden,daß nur Dateien die ein ! vorangestellt ahben gesichert werden, der Rest nicht mehr.
tar cvzf archivsicherung.tar.tgz /dateiablage/!*.*
klappt nicht, wie muß ich es verändern ?
Klappt es nicht mit dem !, muß ich da ein anderes Zeichen verwenden ? Ich möchte abscihtlich nicht mit RSYnc arbeiten, es sollen nur die umbenannten Dateien gepackt werden...
Gruß und Danke
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203554
Url: https://administrator.de/contentid/203554
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
15 Kommentare
Neuester Kommentar
find /dateiablage/ -iname "!*" -exec tar Avfz archivsicherung.tar.tgz {} \;
wäre auch eine Möglichkeit.
korrektur:
find /dateiablage/ -iname "\!*" -exec tar Avfz archivsicherung.tar.tgz {} \;
find /dateiablage/ -iname '!*' -exec tar Avfz archivsicherung.tar.tgz {} \;
Stichwort zu dem Problem: "shell-expansion".
lks
tar: /dateiablage/!*.*: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
tar: Exiting with failure status due to previous errors
Offensichtlich sind die Dateien in Unterordnern und nicht direkt unter "/dateiablage/". versuch mal meinen Vorschlag. mit dem find.
o.k. Dann mußt Du entweder auf die Kompression verzichten
oder mit xargs arbeiten
lks
PS: Der Befehl man fördert mehr Informationen zu den kommandos zutage. Einfach mal
eintippen. Und natürlich auch die Fehlermeldungen genau lesen. die sagt nämlich, daß nicht der find-befehl das Problem ist.
find /dateiablage/ -iname '!*' -exec tar Avf archivsicherung.tar {} \;
oder mit xargs arbeiten
find /dateiablage/ -iname '!*' | xargs tar cvfz archivsicherung.tar
lks
PS: Der Befehl man fördert mehr Informationen zu den kommandos zutage. Einfach mal
man man
eintippen. Und natürlich auch die Fehlermeldungen genau lesen. die sagt nämlich, daß nicht der find-befehl das Problem ist.
skueneth, Du machst einen grundsätzlichen Fehler, Du kennst beides find und tar unzureichend. Daher solltest Du erstmal herausfinden, wie tar in Deinem Fall funktioniert. Danach finde raus wie find sich mit Deinen Datei bzw. Archivnamen verhält und dann bringe alles zusammen.
Ein Tutorial zum Lesen der Manpages findest Du hier
Wobei ich zugebe, dass die Manpages vontar und find ziemlich umfangreich sind. Daher lese hier
Mehr Informationen zu tar findest Du mitdort ist sogar ein Tutorial.
Das, was Lochkartenstanzer schreibt, ist alles richtig! lerne daraus.
Markus
Ein Tutorial zum Lesen der Manpages findest Du hier
Wobei ich zugebe, dass die Manpages von
Mehr Informationen zu tar findest Du mit
info tar
Das, was Lochkartenstanzer schreibt, ist alles richtig! lerne daraus.
Markus
Zitat von @presidente:
Hallo Lochkartenstanzer,
wahrscheinlich stelle ich mich an, aber
find /dateiablage/ -iname '!*' | xargs tar cvfz archivsicherung.tar
Jetzt scheint es schonmal weiterzulaufen,
jedoch sind in der Ordnerstruktur noch z.B. solche Ordner:
Neuer Ordner
mit Leerzeichen
Hallo Lochkartenstanzer,
wahrscheinlich stelle ich mich an, aber
find /dateiablage/ -iname '!*' | xargs tar cvfz archivsicherung.tar
Jetzt scheint es schonmal weiterzulaufen,
jedoch sind in der Ordnerstruktur noch z.B. solche Ordner:
Neuer Ordner
mit Leerzeichen
o.k. Du hast also leerzeichen im den Datei-und Ordnernamen. Da muß man natürlich dafür sorgen, daß die Namen durch single- oder double-Quotes zusammengehalten werden.
Da gibt es verschiedene Möglichkeiten. Eine davon wäre:
find / -iname '!*' -exec echo "\"{}\"" \;
und das Ergebnis an xargs und tar verfüttern.
Außderdem wie muß ich das mit dem <copy type=plain>
das war ein Tippfehler von mir. sollte der Code-Formatierung dienen.
generell solltet Ihr aber Namenskonventionen festlegen und diese auch überprüfen.
Es gibt zu viele Stolperfallen, wenn man nicht ein wenig auf die Zeichen in Datei und Ordnernamen achtet.
lks
Zitat von @presidente:
Hallo, sorry daß ich mich so stelle. Aber das klappt nun schonmal:
find / -iname '!*' -exec echo "\"{}\"" \;
da werden mit die Files und ordner augelistet.
Aber wie übergebe ich das ganze nun an
tar
find /dateiablage/ -iname "\!*" -exec tar Avfz archivsicherung.tar.tgz "\"{}\"" \;
das klappt so nicht, jetzt helft mir bitte
bitte die ganze Zeile...
Hallo, sorry daß ich mich so stelle. Aber das klappt nun schonmal:
find / -iname '!*' -exec echo "\"{}\"" \;
da werden mit die Files und ordner augelistet.
Aber wie übergebe ich das ganze nun an
tar
find /dateiablage/ -iname "\!*" -exec tar Avfz archivsicherung.tar.tgz "\"{}\"" \;
das klappt so nicht, jetzt helft mir bitte
bitte die ganze Zeile...
Weil Du es bist:
find / -iname '!*' -exec echo "\"{}\"" \; | xargs tar cvfz archivsicherung.tgz
Ich hatte ja gesagt, verfütter es an xargs und tar. Das macht man überigens mit einer Pipe (0 der senkrechte Strich).
Also:
Hol Dir schleunigst ein Buch über linux, Shell oder gnu-utils wie z.B. die Einführung in die bash-Shell oder das Linux Kochbuch, um Dir grundlagen anzulesen.
Vorkauen ist normalerweise nicht mein Ding.
lks