Dodawanie rozpakowanych plików do spakowanego folderu


32

Próbuję dodać rozpakowane pliki do istniejącego już skompresowanego folderu powiedz new folder.zip. Czy można używać zip -r new folder.zippo dodaniu do nich niektórych rozpakowanych plików? Czy to polecenie skompresuje folder? Czy jest na to jakaś alternatywa?


możesz potokować, rozpakować oryginalny plik | następnie spakuj całą zawartość, tak jak utworzyłbyś nowy plik. Nie jestem pewien, jak zrobiłbyś to za pomocą jednego polecenia.
unixmiah

Odpowiedzi:


44

Użyj flagi aktualizacji: -u

Przykład:

zip -ur existing.zip myFolder

To polecenie kompresuje i dodaje myFolder(i jego zawartość) do existing.zip.


Zaawansowane użycie:

Flaga aktualizacji porównuje przychodzące pliki z istniejącymi i albo doda nowe pliki, albo zaktualizuje istniejące.

Dlatego jeśli chcesz dodać / zaktualizować określony podkatalog w pliku zip, po prostu zaktualizuj źródło zgodnie z potrzebami, a następnie ponownie skompresuj całe źródło za pomocą -uflagi. Tylko zmienione pliki zostaną skompresowane.

Jeśli nie masz dostępu do plików źródłowych, możesz rozpakować plik zip, a następnie zaktualizować żądane pliki, a następnie ponownie skompresować za pomocą -uflagi. Ponownie tylko zmienione pliki zostaną skompresowane.

Przykład:

Oryginalna struktura źródła


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

Zaktualizowana struktura źródła


ParentDir
├── file1.txt
├── file2.txt
├── ChildDir
│   ├── file3.txt
│   ├── Logs
│   │   ├── logs1.txt
│   │   ├── logs2.txt
│   │   ├── logs3.txt 
│   │   ├── logs4.txt <-- NEW FILE 

Stosowanie

$ zip -ur existing.zip ParentDir 
> updating: ParentDir/ChildDir/Logs (stored 0%)
>   adding: ParentDir/ChildDir/Logs/logs4.txt (stored 96%)

Dzięki! Jak mogę określić folder w zipie, aby go dodać?
Aaron Esau,

Dodałem sekcję, aby odpowiedzieć na twoje pytanie. :)
Ethan Strider,

0

Wierzę, że możesz dodawać pliki za pomocą tego polecenia:

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

-rOpcja polecenia suwak pozwala na dodawanie plików.


-rjest opcją rekurencyjną.
ctrl-alt-delor

@richard, naprawię to. Daj mi kilka
ryekayo,

@richard, okazuje się, że źródło, które otrzymałem, mówi, że możesz użyć polecenia -r do zmodyfikowania istniejącego skompresowanego pliku: linuxnix.com/2014/05/…
ryekayo,

2
dodaj - zaktualizuj istniejące wpisy i dodaj nowe pliki. Jeśli archiwum nie istnieje, utwórz je. To jest tryb domyślny. (nie jest wymagana żadna opcja zastępowania lub dodawania plików. -rmoże być używana przy dodawaniu katalogów lub gdy nie dodaje się katalogów. Cóż za każdym razem, gdy nie chcesz po prostu dodawać katalogu i żadnej zawartości, więc prawie cały czas W skrócie, przykład jest poprawny, ale wyjaśnienie jest błędne.) (Najlepiej to przetestować, to tylko moja interpretacja instrukcji).
ctrl-alt-delor

2
Czy ze względów bezpieczeństwa NA PEWNO chcesz zmodyfikować istniejące archiwum? Zamiast tego zrobię przynajmniej kopię bezpieczeństwa, dodam, a następnie ponownie sprawdzę integralność archiwum przed przystąpieniem do nowego.
mdpc

0

Flaga -u działa dla plików do

zip -ur zip_to_upload.zip file_to_add.txt

pozdrowienia


0

Z powodzeniem użyłem zippolecenia. z opcją grow (-g), aby dodać podfolder folder1/folder2zawierający pliki fileA.txti fileB.txt:

zip -gr folder.zip folder1/folder2

-roznacza recurse reż.

Z mojego zrozumienia -g powinien rozwinąć pliki zip, nie tworząc nowego pliku zip (może to być przydatne w przypadku bardzo dużych archiwów zip). W przypadku problemów możesz najpierw spróbować utworzyć podfoldery w folderze.zip za pomocą (np.):

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

0

Jeśli masz wiele plików w tym samym miejscu z archiwum zip i chcesz je wszystkie skopiować do archiwum, możesz:

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

To aktualizuje plik zip ( -uopcja) rekurencyjnie ( -ropcja) ze wszystkimi znalezionymi plikami oprócz samego pliku zip ( !jest to negacja pliku zip )

Następnie możesz po prostu usunąć wszystkie pliki oprócz pliku zip zgodnie z powyższą regułą:

rm !(zipfile.zip)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.