선행 마침표 없이 현재 디렉토리의 tar 아카이브를 만듭니다.

선행 마침표 없이 현재 디렉토리의 tar 아카이브를 만듭니다.

내가 다음을 수행할 때:

tar czvf ../myarchive.tar.gz ./

내 tar 아카이브에 (성가신) 루트 폴더가 있습니다.

짜증 나는

아카이브를 생성할 때 이 끔찍한 기간을 어떻게 제거할 수 있습니까?

답변1

이 점은 tar매개변수에 지정한 방식으로 경로 구조가 생성되기 때문에 발생합니다. 그래서 당신이 준대로.소스로서 아카이브도 동일한 구조로 생성됩니다.

이것을 시도해 볼 수 있습니다 (참고: 이는 숨겨진 파일과 일치하지 않습니다.):

tar -czvf ../myarchive.tar.gz *

n.st의 의견 및 zhoux의 답변 정보로 업데이트되었습니다.

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

답변2

넌 몰라.

name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"

(참고: 쉘에 현재 디렉터리 심볼릭 링크 추적이 켜져 있고 현재 디렉터리가 심볼릭 링크를 통해 액세스되는 경우에는 작동하지 않습니다.)

예, 그것은 당신이 요청한 것이 아니지만 당신이 해야 할 일입니다. 현재 디렉토리에 많은 파일이 있는 아카이브를 확장하는 것은 짜증나는 일입니다. 이는 아카이브의 압축을 풀고 파일에 대한 대상 디렉터리를 생성하는 모든 사람에게 부담을 주며, 실수로 비어 있지 않은 디렉터리에 압축을 풀면 정리하기가 어렵습니다. 대부분의 경우 아카이브는 이름이 아카이브의 기본 이름인 최상위 디렉터리를 생성해야 합니다.

답변3

앞에 ^을 추가하는 것이 좋습니다.

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

또는 "/"가 전체 경로 이름 끝에 있지 않는 한 아카이브 내 전체 경로 이름의 모든 "/"가 제거됩니다.

관련 정보