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

약 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 -r /Volumes/Storage\ 4/archive.zip /Volumes/GGZ/faster/mybigfolder/

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

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

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


답변

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

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

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


답변

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

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


답변

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

somevar=`ls -1 somedir`

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

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

somevar=`ls -1d somedir/*`

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


답변