Hinzufügen von entpackten Dateien zu einem gezippten Ordner


32

Ich versuche, entpackte Dateien zu einem bereits gepackten Ordner hinzuzufügen new folder.zip. Ist es möglich, zip -r new folder.zipnach dem Hinzufügen einiger entpackter Dateien zu verwenden? Komprimiert dieser Befehl den Ordner? Gibt es eine Alternative dazu?


Sie können es weiterleiten und die ursprüngliche Datei entpacken Dann komprimieren Sie den gesamten Inhalt, während Sie eine brandneue Datei erstellen. Ich bin nicht sicher, wie Sie dies mit einem einzigen Befehl tun würden.
Unixmiah

Antworten:


44

Verwenden Sie das Update-Flag: -u

Beispiel:

zip -ur existing.zip myFolder

Dieser Befehl komprimiert und fügt myFolder(und seinen Inhalt) der existing.zip.


Fortgeschrittene Nutzung:

Das Update-Flag vergleicht die eingehenden Dateien tatsächlich mit den vorhandenen und fügt entweder neue Dateien hinzu oder aktualisiert vorhandene.

Wenn Sie daher ein bestimmtes Unterverzeichnis in 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, die gewünschten Dateien aktualisieren und sie mit der Markierung erneut komprimieren -u. Auch hier werden nur die geänderten Dateien komprimiert.

Beispiel:

Ursprüngliche Quellstruktur


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt

Quellstruktur aktualisiert


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%)

Vielen Dank! Wie kann ich den Ordner in der Zip angeben, dem ich ihn hinzufügen möchte?
Aaron Esau

Ich habe einen Abschnitt hinzugefügt, um Ihre Frage zu beantworten. :)
Ethan Strider

0

Ich glaube, Sie können Dateien mit diesem Befehl hinzufügen:

zip -r zipfile.zip newfile.txt newfile1.txt

Mit der -rOption des Befehls zip können Sie Dateien hinzufügen.


-rist eine rekursive Option.
Strg-Alt-Delor

@richard, ich werde das reparieren. Gib mir ein paar
Ryekayo

@richard, es stellt sich heraus, dass die Quelle, von der ich gehört habe, besagt, dass Sie den Befehl -r verwenden können, um eine vorhandene komprimierte Datei zu ändern: linuxnix.com/2014/05/…
ryekayo

2
add - Aktualisieren Sie vorhandene Einträge und fügen Sie neue Dateien hinzu. Wenn das Archiv nicht existiert, legen Sie es an. Dies ist der Standardmodus. (ist keine Option erforderlich, um Dateien zu ersetzen oder hinzuzufügen. -rKann verwendet werden, wenn Verzeichnisse hinzugefügt werden oder wenn keine Verzeichnisse hinzugefügt werden. Nun, zu jeder Zeit, zu der Sie nicht nur das Verzeichnis und keinen Inhalt hinzufügen möchten, so ziemlich die ganze Zeit Kurz gesagt, das Beispiel ist korrekt, aber die Erklärung ist falsch.) (Um es zu testen, ist dies nur meine Interpretation des Handbuchs.)
ctrl-alt-delor

2
Sind Sie sicher, dass Sie aus Sicherheitsgründen ein vorhandenes Archiv ändern möchten? Stattdessen erstelle ich zumindest eine Sicherheitskopie, füge sie hinzu und überprüfe die Integrität des Archivs erneut, bevor ich mich auf das neue festschreibe.
MDPC

0

Das Flag -u funktioniert für Dateien bis

zip -ur zip_to_upload.zip file_to_add.txt

Grüße


0

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

zip -gr folder.zip folder1/folder2

-rbedeutet rekursiv dir.

Nach meinem Verständnis sollte -g die ZIP-Dateien vergrößern und keine neue ZIP-Datei erstellen (dies kann bei sehr großen ZIP-Archiven hilfreich sein). Bei Problemen können Sie zunächst versuchen, Unterordner in folder.zip mit (zB) zu erstellen:

zip -g folder.zip folder1
zip -g folder.zip folder2

0

Wenn Sie viele Dateien am selben Ort wie Ihr ZIP-Archiv haben und alle in das Archiv kopieren möchten, können Sie Folgendes tun:

zip -ur zipfile.zip !(zipfile.zip)

Dies aktualisiert Ihre Zip-Datei (die -uOption) rekursiv ( -rOption) mit allen gefundenen Dateien außer der Zip-Datei selbst ( !ist die Negation der Zip-Datei ).

Dann können Sie einfach alle Dateien mit Ausnahme der ZIP-Datei löschen, indem Sie dieselbe Regel wie oben anwenden:

rm !(zipfile.zip)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.