Beim Versuch zu laufen
find . -iname "*.gz" -mtime +7 -exec tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz {} \;
Ich bekomme die Liste der Dateien
./corosync.log-20140620.gz
./corosync.log-20140618.gz
./rgmanager.log-20140620.gz
./fenced.log-20140620.gz
./rgmanager.log-20140618.gz
./qdiskd.log-20140618.gz
Das Archiv erhält jedoch nur das letzte Element
tar -tvf all_gizip_$(date +%Y-%m-%d).tar.gz
-rw-r--r-- root/root 506 2014-06-18 03:21 ./qdiskd.log-20140618.gz
Was mache ich falsch?
Antwort1
Ihr Befehl wird tar
einmal für jede Datei ausgeführt und jeder Aufruf von tar
erzeugt eine Ausgabe mit demselben Namen und überschreibt somit die vorherige Ausgabe. Sie erhalten also nur die letzte Datei. Sie benötigen etwas wie
find . -iname "*.gz" -mtime +7 | xargs tar czvf all_gizip_$(date +%Y-%m-%d).tar.gz
Dies sollte problemlos funktionieren, solange Ihre Dateiliste nicht sehr groß ist. Wenn dies der Fall ist, sollten Sie wahrscheinlich auf die Verwendung umsteigen und am Ende tar rvf
einen separaten Schritt ausführen .gzip