Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
 Registrieren
    Profil      Private Nachrichten   Login
Archiv mit gzip?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ottto



Anmeldungsdatum: 09.09.2004
Beiträge: 176

BeitragVerfasst am: 06. Feb 2012 15:20   Titel: Archiv mit gzip? Antworten mit Zitat

Hallo,
ich hab Verzeichnisse in die täglich mehrere tausend kleine Deiteien gelegt werden.
Diese Dateien möchte ich täglich in ein neues Archiv verschieben.

Funktioniert mit:
gzip -c TestDateien* > TestArchiv$(date +%Y%m%d).gz

nur das dabei die Quelldateien nicht gelöscht werden.
Gibt es dazu vielleicht noch eine Option?
Oder ist gzip nicht das richtige Toll? Bekomme es mit tar aber auch nicht hin.

Danke.
ottto
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3464

BeitragVerfasst am: 06. Feb 2012 17:12   Titel: Antworten mit Zitat

Dir ist aber schon klar, dass Gzip kein Archivierungswerkzeug ist? Hast du schonmal probiert, dein "Archiv" wieder auszupacken? Da kriegst du nicht etwa einen Haufen Dateien heraus, sondern eine große Datei, die aus den aneinandergehängten kleinen Dateien besteht. Man kann die Dateien im "Archiv" mit Gefummel wieder auseinanderbekommen, allerdings erscheint mir das angesichts der Existenz von tar und cpio reichlich umständlich.

Was hält dich ansonsten davon ab, erst einmal die gewünschten Dateinamen in eine Variable umzuleiten, dann die Dateien aus der Variable zu archivieren und danach zu löschen?

Code:

#!/bin/bash
FILES="$(echo TestDateien*)"
tar -czf TestArchiv$(date +%Y%m%d).tar.gz $FILES
rm $FILES

Der Trick bei der Sache ist, dass die Shell alles automatisch expandiert und globbing anwendet, wenn irgendwas nicht in Häkchen steht.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

ottto



Anmeldungsdatum: 09.09.2004
Beiträge: 176

BeitragVerfasst am: 09. Feb 2012 8:39   Titel: Antworten mit Zitat

Hallo Janka,
vielen Dank für die Antwort.
Leider bekomme ich die Dateinamen nicht in die Variable FILES.
Ich kann ls in eine Datei umleiten ls > liste.txt
Bekomme den Inhalt dann aber auch nicht in die Variable FILES="$(cat liste.txt)"

Wie bekomme ich die Ausgabe von "ls" in die Variable?

Danke.
ottto
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3464

BeitragVerfasst am: 09. Feb 2012 18:59   Titel: Antworten mit Zitat

ottto hat folgendes geschrieben::
Hallo Janka,
vielen Dank für die Antwort.
Leider bekomme ich die Dateinamen nicht in die Variable FILES.

So wie ich es dir schrieb geht das. "echo Bla*" gibt alle Dateinamen im aktuellen Verzeichnis aus, auf die der Glob Bla* passt. ls brauchst du dafür nicht.

Wenn du mehr Dateinamen hast als in die Kommandozeile passen, kannst du die Option -T von tar benutzen.

$ man tar

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

ottto



Anmeldungsdatum: 09.09.2004
Beiträge: 176

BeitragVerfasst am: 10. Feb 2012 10:39   Titel: Antworten mit Zitat

sorry!!!!

ich hab versucht die Funktionalität auf einem FreeNAS -System einzurichten (wo die Daten auch abgelegt werden).
Es gibt dort zwar tar, echo, ls, gzip, usw. , ist aber doch kein Linux bzw. keine richtige Shell. Bei der Variablenzuweisung kommen Fehler.

Ich ab Deine Zeilen auf meinem LinuxServer erfolgreich getestet.
Ich werde versuchen die Daten von dort zu packen.

Vielen Dank.
ottto
 
Benutzer-Profile anzeigen Private Nachricht senden

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3464

BeitragVerfasst am: 10. Feb 2012 23:33   Titel: Antworten mit Zitat

ottto hat folgendes geschrieben::
Bei der Variablenzuweisung kommen Fehler.

Dann ist es vermutlich keine Bash, sondern Ash oder die Busybox-Shell. Da nimmst du dann statt $() Backticks, also so:
Code:

#!/bin/sh
FILES=`echo TestDateien*`

Da du bei deinem Kommandobeispiel die $()-Syntax benutzt hast, bin ich natürlich von Bash ausgegangen.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy