디렉토리를 압축하는 동안 "zip 경고 : 이름이 일치하지 않습니다"


19

약 180GB의 폴더가 있으며 다음과 같이 압축해야합니다.

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

그러나 그것은 말합니다 :

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

어떻게하면 되나요? 또 다른 메모로 archive.zip는 존재하지 않지만 만들려고합니다.


시도zip -P password /Volumes/Storage\ 4/archive -p /Volumes/GGZ/faster/mybigfolder/*
Costas

답변:


7

당신의 명령은 다음과 같아야합니다 :

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

매뉴얼 페이지 ( man zip)에는 다음이 있어야합니다.

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

또한 -r"*"쉘 글로브보다 재귀 옵션을 사용하는 것이 좋습니다.


또 다른 관련 함정은 간단한 타이핑 실수입니다 (예 : 한 스크립트에서 다른 스크립트로 명령을 복사 한 경우). 예를 들어, 대신 winzip32.exe -a -r %DEST_PATH%\Output.zip %DEST_PATH%\Output.zip %SOURCE_PATH%\*.*실수로을 입력 winzip32.exe -a -r %DEST_PATH%\Output.zip %DEST_PATH%\Output.zip %SOURCE_PATH%\*.*합니다. 추가 사항에 유의하십시오 Output.zip... 쉽게 완료되었습니다!
AlainD

23

이 오류는 압축중인 디렉토리 트리의 기호 링크로 인해 발생할 수도 있습니다.

대상이 올바른 대상이 아닌 경우 (아마도 디렉토리가 다른 곳에서 이동되거나 복사 되었기 때문에) zip 은 symlink를 따라 대상 파일을 아카이브하려고 시도합니다.

-y(또는 --symlinks) 옵션 을 사용하여이를 피할 수 있습니다 .


0

압축 할 파일을 일치 시키려면 -rglob ( *) 대신 재귀 플래그 ( )를 사용하십시오 . 또한 먼저 아카이브 이름을 지정한 다음 파일 목록을 제공하십시오.

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

0

또한 -r스위치에서 해결할 수없는 다른 이유로 과거 에이 오류가 발생했습니다 . 무슨 일이 있었는지 다음 bash 코드 / 변수로 zip에 추가 할 파일을 기반으로했습니다.

somevar=`ls -1 somedir`

문제는 ls단지 현재 디렉토리에있는 것처럼 파일을 나열하는 것이므로 이것이 zip불평하는 이유 입니다 (실제로 파일이 잘못된 / 현재 디렉토리를 보도록 지시되어 있기 때문에 파일이 압축되어 있지 않습니다).

이것이 문제인 경우 다음과 같이 수정할 수 있습니다.

somevar=`ls -1d somedir/*`

보시다시피 -d스위치를 사용 /*하고 디렉토리 이름 끝에 파일을 성공적으로 추가했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.