Wie kann ich den Find-Befehl mit gzip kombinieren?

Wie kann ich den Find-Befehl mit gzip kombinieren?

Ich versuche, bestimmte Dateien zu komprimieren:

find /media/mount/storage -newermt "2013-08-01 00:00:00" -path '*/*wind.txt' -print0 | xargs -0 gzip -l >> file_system.tar.gz

aber ich erhalte die folgende Fehlermeldung:

gzip: /media/mount/storage/20130811120802_RHI1/20130811121000_wind.txt: not in gzip format

Wo mache ich den Fehler?

BEARBEITET: Mit der Antwort von Chronitis wird der Tar manchmal neu erstellt. Dies ist die Ausgabe:

 /media/mount/storage/File system/20130505082135_CT1/20130505090000_wind.txt
 /media/mount/storage/File system/20130505085301_CT1/20130505090000_wind.txt
 tar: Removing leading `/' from member names <- the size of the tar became zero
 /media/mount/storageFile system/20130505085301_CT1/20130505091000_wind.txt
 /media/mount/storageFile system/20130505085301_CT1/20130505092000_wind.txt

Antwort1

Ich gehe davon aus, dass Sie ein gzipptes TAR-Archiv erstellen möchten, das alle vom findBefehl gefundenen Dateien enthält (und nicht jede dieser Dateien einzeln gzippt).

Mit dem obigen Befehl sind mehrere Probleme verbunden:

  • gzip -lübernimmt ein bestehendes Archiv und druckt den Inhalt
  • gziperzeugt selbst keine Tar-Archive (einen Container für mehrere Dateien), sondern komprimiert jede Datei einzeln

Sie möchten wahrscheinlich etwa Folgendes:

find [conditions] -print0 | xargs -0 tar -zcf filesystem.tar.gz

verwandte Informationen