Hinzufügen entpackter Dateien zu einem komprimierten Ordner

Hinzufügen entpackter Dateien zu einem komprimierten Ordner

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.zipnachdem 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 -uFlag. 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 -uFlag 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 -rOption des Zip-Befehls können Sie Dateien hinzufügen.

Antwort3

Ich habe den zipBefehl mit Erfolg verwendet. mit demwachsenOption (-g), um einen Unterordner folder1/folder2mit den Dateien hinzuzufügen fileA.txtund fileB.txt:

zip -gr folder.zip folder1/folder2

-rbedeutetrekursivdir.

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 -uOption) rekursiv ( -rOption) 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)

verwandte Informationen