Ich versuche, beispielsweise entpackte Dateien zu einem vorhandenen, bereits komprimierten Ordner hinzuzufügen new folder.zip
. Ist es möglich, dies zu verwenden, zip -r new folder.zip
nachdem einige entpackte Dateien hinzugefügt wurden? Komprimiert dieser Befehl den Ordner? Gibt es eine Alternative dazu?
Antwort1
Verwenden Sie das Update-Flag:-u
Beispiel:
zip -ur existing.zip myFolder
Dieser Befehl komprimiert und fügt myFolder
(und den Inhalt) hinzu existing.zip
.
Erweiterte Verwendung:
Das Aktualisierungsflag vergleicht die eingehenden Dateien mit den vorhandenen und fügt entweder neue Dateien hinzu oder aktualisiert vorhandene.
Wenn Sie also ein bestimmtes Unterverzeichnis innerhalb der Zip-Datei hinzufügen/aktualisieren möchten, aktualisieren Sie einfach die Quelle wie gewünscht und komprimieren Sie dann die gesamte Quelle erneut mit dem -u
Flag. Nur die geänderten Dateien werden komprimiert.
Wenn Sie keinen Zugriff auf die Quelldateien haben, können Sie die Zip-Datei entpacken, dann die gewünschten Dateien aktualisieren und dann mit dem -u
Flag erneut zippen. Auch hier werden nur die geänderten Dateien zippen.
Beispiel:
Ursprüngliche Quellstruktur
ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│ ├── file3.txt
│ ├── Logs
│ │ ├── logs1.txt
│ │ ├── logs2.txt
│ │ ├── logs3.txt
Aktualisierte Quellstruktur
ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│ ├── file3.txt
│ ├── Logs
│ │ ├── logs1.txt
│ │ ├── logs2.txt
│ │ ├── logs3.txt
│ │ ├── logs4.txt <-- NEW FILE
Verwendung
$ zip -ur existing.zip ParentDir
> updating: ParentDir/ChildDir/Logs (stored 0%)
> adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)
Antwort2
Ich glaube, Sie können Dateien mit diesem Befehl hinzufügen:
zip -r zipfile.zip newfile.txt newfile1.txt
Mit der -r
Option des Zip-Befehls können Sie Dateien hinzufügen.
Antwort3
Ich habe den zip
Befehl mit Erfolg verwendet. mit demwachsenOption (-g), um einen Unterordner folder1/folder2
mit den Dateien hinzuzufügen fileA.txt
und fileB.txt
:
zip -gr folder.zip folder1/folder2
-r
bedeutetrekursivdir.
Nach meinem Verständnis sollte -g die Zip-Dateien vergrößern und nicht eine neue Zip-Datei erstellen (das kann bei sehr großen Zip-Archiven nützlich sein). Bei Problemen können Sie zunächst versuchen, Unterordner in folder.zip zu erstellen, beispielsweise mit:
zip -g folder.zip folder1
zip -g folder.zip folder2
Antwort4
Wenn Sie viele Dateien am selben Ort wie Ihr ZIP-Archiv haben und Sie alle in das Archiv kopieren möchten, haben Sie folgende Möglichkeiten:
zip -ur zipfile.zip !(zipfile.zip)
Dadurch wird Ihre Zip-Datei (die -u
Option) rekursiv ( -r
Option) mit allen gefundenen Dateien aktualisiert, außer der Zip-Datei selbst ( !
ist die Negation der Zip-Datei).
Anschließend können Sie einfach alle Dateien außer der ZIP-Datei löschen, indem Sie der oben beschriebenen Regel folgen:
rm !(zipfile.zip)