Ralph: Packen mit tar: wie kann ich Dateien ausschließen?

Liebe Forumsmitglieder,

bisher mache ich meine Backups auf folgende Art:

tar -cf backup/meinArchiv.tar meinePhotos/

Funktioniert auch ganz prima, nur wird da mehr gesichert, als mir eigentlich lieb ist. Denn von den Daten, die sich da so befinden, bspw...

meinePhotos/123/123.jpg
   meinePhotos/123/.listing
   meinePhotos/123/thumbs/123.jpg

... brauche ich eigentlich nur diejenigen, die kein "thumbs" im Pfad haben, und deren Datei nicht ".listings" heißt. Ich brauche also von obigen Pfaden nur den ersten.

Geht das irgendwie?

Danke euch,
Ralph

  1. Hallo,

    tar -cf backup/meinArchiv.tar meinePhotos/
    ... brauche ich eigentlich nur diejenigen, die kein "thumbs" im Pfad haben, und deren Datei nicht ".listings" heißt. Ich brauche also von obigen Pfaden nur den ersten.

    hast Du Dir die diversen Optionen, die mit --exclude beginnen, einmal angeschaut?

    Freundliche Grüße

    Vinzenz

  2. Hallo,

    eine unixoide Shell?

    meinePhotos/123/123.jpg
       meinePhotos/123/.listing
       meinePhotos/123/thumbs/123.jpg

    Man kann bei tar mit der Option --exclude bestimmte Muster von Dateipfaden ausschließen.

    Du könntest aber auch anders denken: Du listest tar einfach die Dateien auf, die Du haben willst und das bequem mit der in der Shell eingebauten shell expansion:

    $ ls -a foo/
      . .hidden eins.jpg zwei.jpg
      .. drei.jpg thumbs

    (Ein Nachbau Deines Verzeichnisses)

    $ echo foo/*
      foo/drei.jpg foo/eins.jpg foo/thumbs foo/zwei.jpg

    (Einfache shell expansion selektiert alles, ausser hidden Files)

    $ echo foo/*.jpg
      foo/drei.jpg foo/eins.jpg foo/zwei.jpg

    (Ein genaueres Muster selektiert einfach nur die Dateien, die Du haben willst)

    $ tar --create --verbose --file=bla.tar foo/*.jpg
      foo/drei.jpg
      foo/eins.jpg
      foo/zwei.jpg

    (Auch im Aufruf von tar findet die shell expansion statt. tar kriegt also einfach nur die Dateien Du willst)

    $ tar --list --file=bla.tar
      foo/drei.jpg
      foo/eins.jpg
      foo/zwei.jpg

    (... und verpackt diese auch)

    $ rm -R foo/
      $ tar --extract --file=bla.tar
      $ ls -a foo/
      . .. drei.jpg eins.jpg zwei.jpg

    (Tada!)

    Tim

  3. Hallo ihr beiden,

    prima, hat mir sehr geholfen! Vor allem dir Tim, danke, hast meinen Horizont erweitert :-)
    Ich hab's jetzt aber mit exclude gemacht, war ja richtig einfach. Ich hatte gedacht, oje, da muss ich die Positivliste (die ja bisher auch schon angebe) irgendwie negieren. Oder was mit regulaeren Ausdruecken... So gefaellt's mir besser! :-)

    Ralph