Wie kann ich unter Linux Ordnerinhalte als zip-Datei packen?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo

Wie kann ich unter Linux Ordnerinhalte als zip-Datei packen?

Auf einem GNU/Linux-System ist ZIP nicht die erste Wahl, die lautet nämlich TAR

man zip schreibt:

-U (--copy) option).
-b path-x file file ... @
-i files-K Attempt to convert the names and paths to conform to MS Windows. Behaviour similar to
-k but long names
-n suffixes
-O output-file
-P password
-s splitsize
-t mmddyyyy-m option) no input files are removed.
-x files-Z cm

und man tar

-A, --catenate, --concatenate
-c, --create
-d, --diff, --compare
-r, --append
-t, --list
-u, --update
-x, --extract, --get
-g, --listed-incremental=FILE-G, --incremental
-n, --seek-S, --sparse
-k, --keep-old-files
-U, --unlink-first
-W, --verify
-O, --to-stdout
-m, --touch
-p, --preserve-permissions, --same-permissions
-s, --preserve-order, --same-order
-f, --file=ARCHIVE
-F, --info-script=COMMAND, --new-volume-script=COMMAND
-L, --tape-length=
-M, --multi-volume
-b, --blocking-factor=BLOCKS
-B, --read-full-records
-i, --ignore-zeros
-H, --format=FORMAT
-V, --label=TEXT
-a, --auto-compress
-I, --use-compress-program=COMMAND
-j, --bzip2
-J, --xz
-z, --gzip, --gunzip, --ungzip
-Z, --compress, --uncompress
-C, --directory=DIR
-h, --dereference
-K, --starting-file=MEMBER
-N, --newer=DATE, --after-date=DATE
-P, --absolute-names-T, --files-from=FILE
-X, --exclude-from=FILE
-l, --check-links
-R, --block-number
-v, --verbose
-w, --interactive, --confirmation
-o When creating, same as --old-archive. When extracting, same as --no-same-owner.

Kurzform by Linuxhase-Script

Linuxhase

Bei mir tut das dieses Kommando:

zip -r /home/linuxhase/zipfile.zip *

es wird in /home/linuxhase eine Datei zipfile.zip erstellt aus allen Dateien des Verzeichnisses in welchem ich mich gerade befinde. Alternativ kann man den Pfad natürlich auch angeben:

zip -r /home/linuxhase/zipfile.zip /home/linuxhase/Downloads/*

es wird in /home/linuxhase eine Datei zipfile.zip erstellt aus allen Dateien welche sich im Verzeichnis Downloads befinden.

Noch raffinierter ist es so:

tar -xvf zipfile.tar /home/linuxhase/Downloads/* | zip zipfile.zip -

Damit wird zuerst mit TAR ein Archiv zipfile.tar erstellt, welches danach von ZIP komprimiert wird.

Linuxhase

1

Folgendes in eine Datei (z. B. zip.sh) kopieren, ausfürbar machen, und dann mit "./zip.sh beispiel.zip /pfad/zu/ordner" aufrufen:

#!/bin/bash

if [ "$#" -ne "2" ]; then
echo 'USAGE: zip.sh OUTFILE INDIR'
exit 1
fi

out_file=`readlink -f $1`
in_dir=`readlink -f $2`

pushd $in_dir
zip -rv $out_file .
popd

Als einzeiler kannst du auch Folgendes eingeben:

pushd /pfad/in ; zip -r /pfad/out.zip . ; popd

Dabei musst du dann aber auf absolute Pfadangaben achten, aber diese Arbeit nimmt dir das komplette Skript im ersten Beispiel ab.

Bei TAR ist es deutlich einfacher, da du dabei einfach einen -C switch angeben kannst.

Viel Spaß! :)

PS: Wenn du - wie aus dem anderen Kommentar ersichtlich - ein Skript für Backups basteln willst, dann solltest du (gerade unter *ix-Systemen) TAR anstelle von ZIP benutzen:

tar -cjvfhW test.tar.bz2 -C /tmp/foo/ .

Die Switches: c erzeugt ein neues Archiv, j jagt alles durch die BZip2 Kompression (besser als Zip und GZip), v gibt die aktuell verarbeiteten Dateien aus, f erzwingt ein Überschreiben bei bereits vorhandener Archivdatei, h löst symbolische Verknüpfungen auf und W überprüft am Ende das ganze Archiv noch einmal zusätzlich auf Korrektheit.

Das C ganz am Ende wechselt in das Verzeichnis, welches fortan als Wurzel dienen soll, die NICHT in den Pfaden der zu archivierenden Dateien erscheint. Und der Punkt ganz am Schluss steht für eben dieses Verzeichnis und dessen gesamten Inhalt (also alle Dateien und Ordner). :)

Du solltest TAR immer ggü. ZIP bevorzugen, da bei letzterem die Dateiattribute nicht mit gespeichert werden!

1
@TeeTier

PS: j verträgt sich natürlich nicht mit W, also W nur dann benutzen, wenn keine Kompression vorliegt!

0

Moin

Habe ein Beispiel gefunden :

Ihre gesamten Websites liegen gesammelt im Verzeichnis /srv/www. Dort sind sie zum Beispiel standardmäßig bei Opensuse***. Um die Web-Inhalte nun in Ihr Homeverzeichnis zu packen, geben Sie ein:

zip -r ~/websites.zip /srv/www

***muss nicht zwingend OpenSuse sein

Eventuell hilft die das weiter

Quelle: strassenprogrammierer.de/linux-packen-tar-zip_tipp_590.html

Leider passiert dann genau das, was ich oben beschrieben habe. Der Ordner wird gepackt, nicht nur der Inhalt. Sprich in der Zip ist www/<> anstatt <>.

0
@davidmueller13

Dann  musst das eventuell so aussehen zip -r ~/websites.zip /svr/www/site1 site2 usw. warum machst du das ganze nicht in einem Dateimanager? Dateien markieren, rechtsklick und (je nach Distro) "Archiv erstellen" "Hier packen" "zu Archiv hinzufügen" oder was auch immer bei dir steht.

mfg

0
@schiz0

Ich benötige den Befehl für ein Shellskript und da sich die Dateien in diesem Ordner variabel sind, führt das einzeln Auswählen leider nicht zum Ergebnis.

0
@davidmueller13

Ok, sorry aber damit kenne ich mich nicht wirklich aus. Schau mal hier : http://www.strassenprogrammierer.de/shell-programmieren-mit-bash-scripts-unter-linux_tipp_598.html

Da steht weiter unten

***Bislang haben Sie nur interne Fähigkeiten der Bash-Scripts kennen gelernt. Noch raffinierter wird es aber, wenn Sie auch noch externe Programme in Ihre Scripts einbinden. Bauen Sie Ihr Skript doch in eine kleine Backup-Maschine um. Die packt die ihr übergebenen Daten in ein Archiv und schreibt das aktuelle Datum mit in den Archiv-Namen hinein.

#!/bin/bash

# Einfaches Backup-Script

SIKFILEPRE=${HOME}/sicherung

SIKFILENAME=${SIKFILEPRE}_`date +%Y%m%d`.tar

if [ $# -lt 1 ]; then

    echo "Fehler: Kein Dateiname eingegeben"

    echo "Benutzung: $0 datei.ext [datei2.ext] [datei.ext]"

    exit 1

else

    echo ${SIKFILENAME} wird erzeugt

    tar -cvf ${SIKFILENAME} "$@"

    if [ $? -eq 0 ]

    then

        echo Dateien erfolgreich gesichert

    else

        echo Fehler bei Datensicherung

        exit 2

    fi

    gzip $SIKFILENAME

fi

Eventuell findest du auf der Seite eine Lösung für dein Script.

mfg

0

Dateipfad innerhalb eines Ordners abkürzen?

Ich möchte innerhalb von Excel ein Bild via URL laden damit dieses, wenn es in dem Ordner ausgetauscht wird, sich auch in der Tabelle ändert. Problemstellung ist das ich keinen schimmer habe wie ich den Dateipfad so abkürzen kann das, wenn ich den Ordner jemanden per ZIP schicke und der diesen öffnet, die Excel einfach auf den Unterordner namens "Bilder" zugreift. Die Excel befindet sich im Ordner "Ordner" und das Bild wie Ihr an dem Pfad seht im "Bilder" Ordner und heißt "TestBild.jpg.". So sieht aktuell der Pfad aus woher sich die Excel das Bild zieht.

C:\Users\MaxMustermann\Destop\Ordner\Bilder\Testbild.jpg

...zur Frage

[Visual Basic] Alle Dateien / Ordner eines Ordners löschen

Also wenn ich bei VB den Befehl rmdir anwende kommt ein Fehler weil man ja mir rmdir nur leere Ordner löschen kann ,ich möchte aber das er auch die Dateien löscht...Welchen befehl brauche ich da ?

Schonmal Danke ^^

...zur Frage

wieviele Dateien Passen in einen Windows-Ordner oder Linux-Ordner?

Hi, ich habe festgestellt, dass das Öffnen eines Ordners umso länger dauert, umso mehr Dateien sich darin befinden. Gibt es eine zu empfehlende Grenze, wieviele Dateien maximal in einem Ordner stehen sollten, ohne dass es zu großen Geschwindigkeitsverlusten kommt? Ist es vielleicht unter Linux anders oder dauert es dort auch länger, den ordner zu öffnen, umso mehr dateien sich darin befinden?

ps: ich meine Ordner, die mdst 100.000 Daten enthalten, als Ansicht verwende ich unter win7 die Liste, da diese hoff ich mal die Daten am schnellsten präsentiert.

...zur Frage

Desktop Ordner Pfad falsch geändert?

Ich habe den Pfad meines Desktop Ordners von C:\Desktop auf E:\ verändert und dabei vergessen den Pfad auf E:\Desktop\ zu ändern. Jetzt sind alle Dateien des Laufwerk E auf dem Desktop zu sehen und das wollte ich gerade nicht haben. Ich wollte nur die Dateien des Ordners Desktop auf dem Desktop sehen... Nun habe ich den Ordner Desktop aufgelöst und die Dateien so im Laufwerk gespeichert und sie sind trotzdem noch auf dem Desktop zu sehen. Deswegen wollte ich fragen, wie ich die Dateien wieder in einen Ordner zusammenfassen kann und wie ich den Pfad ändern muss, sodass nur diese Dateien auf dem Desktop zu sehen sind... Habe das Problem schon in einer anderen Frage geschildert: https://www.gutefrage.net/frage/pfade-des-desktop-ordners-von-c-auf-e-geaendert?... Über eine positive Hilfestellung freue ich mich sehr Gruß Cucks

...zur Frage

Windows Ordner umbenennen ohne Pfad zu ändern?

Hallo, ich denke alle kennen ja die Ordner "Programme" und "Programme (x86)", diese haben jedoch einen anderen Pfad. Nämlich "Program Files" und "Program Files (x86)". Meine Frage ist nun: Kann man, und wenn ja wie, einen Ordner erstellen, bei dem der Pfad ein anderer ist als der Ordnername?

...zur Frage

Wie kann ich einen Pfad eines Windows Ordner verstecken in Visual Basic?

Ich möchte einen Ordner öffnen der versteckt ist, habe ich auch. habe einen versteckten Ordner eingefügt und habe diese Programmierung genutzt dass er geöffnet wird. Doch er ist ein Zip Ordner und soll durch ein Passwort was das Programm kennt diesen öffnen. Meine Programmierung bisher:

System.Diagnostics.Process.Start("C:\ABC")

Dadurch wird er geöffnet. Wie kann ich das nun machen, dass der den Ordner öffnet indem der das Passwort automatisch eingibt und der Link des Ordners in der Leiste oben die man immer hat unsichtbar macht?

Danke im Voraus! Weiss es ist schwer.

...zur Frage

Was möchtest Du wissen?