ubuntuusers.de

Dateien Archivieren mit finde und tar

Status: Gelöst | Ubuntu-Version: Ubuntu 9.04 (Jaunty Jackalope)
Antworten |

bergfried

Avatar von bergfried

Anmeldungsdatum:
16. Dezember 2008

Beiträge: 18

Hallo,

da es mit meiner schmalen Leitung sehr müßig ist bei Installationen jedes mal die Pakete erneut herunter zu laden sichere ich ab und zu den Ordner /var/cache/apt/ mit:

cd /var/cache/ && sudo tar -cvf backup_apt_$(date +"%d_%m_%y").tar apt/ && cp -v backup_apt*.tar ~/Pakete/ && sudo rm backup_apt*.tar && cd

So weit funktioniert das auch ganz gut. Ich hätte jetzt aber gerne ein Archiv das nur die Pakete enthält. Dazu habe ich versucht find einzuspannen:

find /var/cache/ -name "*.deb" -exec tar -cvf backup_apt_$(date +"%d_%m_%y").tar "{}" \;

Es wird mir auch ein Archiv erstellt. Aber in dem ist leider nur ein Paket. 😕 Kann mir jemand sagen wo der Fehler liegt?

Ja ich weiß, ich könnte direkt alle *.deb's in /var/cache/apt/archives/ packen. Aber ich möchte damit auch vor einem Upgrade mein ~/Pakete-Ordner sichern. Und dort sind die Pakete über verschiedene Unterordner verteilt. Danke schon mal für alle Tipps. ☺

Grüße
bergfried

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

Mit

find /var/cache/ -name "*.deb" -exec tar -cvf backup_apt_$(date +"%d_%m_%y").tar "{}" \;

rufst du für jedes Paket tar auf und erzeugst ein neues Archiv - das dann das alte Archiv überschreibt.

Nimm statt dessen

find /var/cache/ -name "*.deb" | tar -cvf backup_apt_$(date +"%d_%m_%y").tar  -T-

bergfried

(Themenstarter)
Avatar von bergfried

Anmeldungsdatum:
16. Dezember 2008

Beiträge: 18

Hallo diesch,

vielen Dank für die Lösung. ☺ So etwas in die Richtung hab ich mir schon gedacht. Aber ich war mir nicht im Klaren wie ich die Liste anders übergeben hätte können. Wie kommst du denn auf das -T- am Ende? In der Manpage hatte ich nur die Option -T gefunden, was ja auch nicht das richtige war.

Ähnlich ergeht es mir mit der Option --exclude=MUSTER. Der Datei- oder Ordnername scheint es so nicht zu sein. Die Ordner die ich so angegeben habe sind, so fern er überhaupt ein Paket geschnürt hat, trotzdem im Archiv gelandet. Hast du da vielleicht auch einen Tipp?

Danke und schöne Grüße
bergfried

diesch Team-Icon

Avatar von diesch

Anmeldungsdatum:
18. Februar 2009

Beiträge: 5072

Wohnort: Brandenburg an der Havel

-T meint "lies die Dateiliste aus der folgenden Datei" und - steht für stdin. -T- heißt also "Lies die Dateiliste von stdin".

--exclude bezieht sich schon auf Datei- und Ordnernamen, allerdings so, wie sie hinterher im Archiv stehen; und wenn du Joker-Zeichen verwendest, musst du sie vor der Shell schützen.

Wenn du also . einpacken willst, aber nicht ./tmp und nicht *~, sieht das so aus:

tar cvf test.tar --exclude tmp --exclude '*~' .

bergfried

(Themenstarter)
Avatar von bergfried

Anmeldungsdatum:
16. Dezember 2008

Beiträge: 18

Vielen lieben Dank *freu*, in dem Bezug ist der Knoten geplatzt. Jetzt hab ich es verstanden und es funktioniert. 👍

Antworten |