Linux : zip 아카이브 작성시 최상위 디렉토리 지정


17

일반적인 디렉토리 구조 (src /, bin /, ...)를 가진 프로젝트가 있습니다.

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

다음 디렉토리 구조로 아카이브를 작성하려고합니다.

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

이 작업을 수행하는 깔끔한 방법이 있습니까? project-name/다른 곳에 임시 디렉토리 를 만든 다음 zip -r ...해당 임시 디렉토리를 호출하는 최종 파일을 복사 하지 마십시오 .

(기본적으로 일종의 경로 접두사 또는 상대 경로 옵션을 찾고 있습니다.)

답변:


9

어쩌면 이것은 이미 당신에게 일어 났지만 모든 것을 복사하는 대신 sym 링크를 사용하는 것이 어떻습니까?

ln -s project-name project-name-version

그런 다음 zip -rsym 링크를 통해 사용 하십시오 ( zip기본적으로 sym 링크를 참조 해제합니까). 완료되면 단순히 rmsym 링크 를 사용할 수 있습니다 . 아마도 가장 우아한 솔루션은 아니지만 zip직접적 으로 수행하는 확실한 방법을 모르겠습니다 .


1
플래그 tar를 사용하는 경우 에도 작동합니다 -h.
Kyle Strand

(나는 또한 사용하고 z플래그를, 나는 그게 영향을 미치는 경우 확실하지 않습니다.)
카일 스트랜드

15

이것은 대답보다 더 조언입니다 : Git을 사용하십시오 !

프로젝트에 Git 리포지토리를 설정 하면 모든 것이 매우 간단 해집니다.

git archive HEAD --prefix=project-name-version/ \
    --format=zip -o project-name-version.zip

1
훌륭한 조언, 감사합니다. 아카이브 문서를 이눔 : git-scm.com/docs/git-archive
Meglio

1
버전 관리를 사용하는 것이 좋지만이 답변은 일반적인 경우의 질문과 일치하지 않습니다.
raimue

@Raim "이것은 답보다 조언입니다 : Git을 사용하십시오!" 사년 같은 때문에이 작성 ... 그것을 지적 주셔서 감사합니다
사이러스

1
이것이 답변이 아닌 경우 주석으로 변환해야합니다.
raimue

1
@Gregor 나는 그런 파일이 어쨌든라는 이름의 파일을 생성, 예를 들어, 망할 놈의 속성을 사용할 수 있습니다, 실제로 프로젝트의 일부로서 그 바람직한 행동이라고 생각 .gitattributes함유 .git* export-ignore.
cYrus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.