„Ostrzeżenie zip: nazwa nie pasuje” podczas kompresji katalogu

19

Mam folder o wielkości około 180 GB, muszę go spakować w następujący sposób:

zip -p password /Volumes/GGZ/faster/mybigfolder/* /Volumes/Storage\ 4/archive.zip

Ale mówi:

    zip warning: name not matched: /Volumes/Storage 4/archive.zip

Jak mam to zrobić? Z drugiej strony, archive.zipnie istnieje, ale próbuję go utworzyć.

Wyświetlana nazwa
źródło
Spróbujzip -P password /Volumes/Storage\ 4/archive -p /Volumes/GGZ/faster/mybigfolder/*
Costas,

Odpowiedzi:

7

Twoje polecenie powinno brzmieć:

zip -p password -r /Volumes/Storage\ 4/archive.zip /Volumes/GGZ/faster/mybigfolder/

Strona podręcznika ( man zip) pokazuje, że powinieneś mieć:

zip <options> <archive> <inpath...>

Ponadto -rwysoce zalecana jest opcja rekurencji w stosunku do globu powłoki „*”.

Danny Staple
źródło
Kolejną powiązaną pułapką jest prosty błąd w pisaniu (np. Jeśli skopiowałeś polecenie z jednego skryptu do drugiego). Na przykład zamiast winzip32.exe -a -r %DEST_PATH%\Output.zip %DEST_PATH%\Output.zip %SOURCE_PATH%\*.*przypadkowo piszesz winzip32.exe -a -r %DEST_PATH%\Output.zip %DEST_PATH%\Output.zip %SOURCE_PATH%\*.*. Zwróć uwagę na dodatkowe Output.zip... łatwe do wykonania!
AlainD,
23

Ten błąd może być również spowodowany kompresją dowiązań symbolicznych w drzewie katalogów.

Jeśli nie mają one odpowiednich miejsc docelowych (być może dlatego, że katalog został przeniesiony lub skopiowany z innego miejsca), zip spróbuje podążać za dowiązaniem symbolicznym, aby zarchiwizować plik docelowy.

Możesz tego uniknąć (i uzyskać i tak pożądany efekt, który nie polega na archiwizowaniu wielu kopii pliku), używając opcji -y(lub --symlinks).

Bob Eager
źródło
0

Użyj rekurencyjnej flagi ( -r) zamiast glob ( *), aby dopasować pliki do kompresji. Ponadto podaj najpierw nazwę archiwum, a następnie podaj listę plików:

zip -p password -r /Volumes/Storage\ 4/archive.zip /Volumes/GGZ/faster/mybigfolder/
53c
źródło
0

Ten błąd występował również w przeszłości z innego powodu, którego -rprzełącznik nie może naprawić. Stało się tak, że bazowałem na plikach do dodania do zip z następującym kodem / zmienną bash

somevar=`ls -1 somedir`

Problem polega na tym, że lspo prostu wyświetla listę plików tak, jakby były w bieżącym katalogu, i dlatego zipnarzeka (w zasadzie pliki nie istnieją do skompresowania, ponieważ nakazuje im się szukać w niewłaściwym / bieżącym katalogu).

Jeśli to jest twój problem, możesz to naprawić w następujący sposób:

somevar=`ls -1d somedir/*`

Jak widać, użyłem -dprzełącznika, a także /*na końcu nazwy katalogu, a następnie pliki zostały pomyślnie dodane.

Areeb Soo Yasir
źródło