압축하려는 디렉토리에 tar 파일을 만들지 마십시오.
tar -czf /tmp/workspace.tar.gz .
압축을 풀 때 현재 디렉토리 전체에서 파일을 추출한다는 점을 제외하면 트릭을 수행합니다. 더 나은 방법 :
cd ..
tar -czf workspace.tar.gz workspace
또는 자신이 속한 디렉토리의 이름을 모르는 경우 :
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(이것은 사용자가 현재 위치에 도달하기 위해 심볼릭 링크를 따르지 않았고 셸이 심볼릭 링크를 통해 뒤로 점프하여 두 번째 추측을 시도하지 않는다고 가정합니다 bash
.이 점에서 신뢰할 수 없습니다. 걱정해야하는 경우, cd -P ..
물리적 변경 디렉토리를 수행하는 데 사용 합니다. 내 견해로는 기본 동작이 아니라는 것이 어리 석습니다. 적어도 cd ..
대체 의미가 없었던 사람들에게는 혼란 스럽 습니다.)
토론의 한 의견은 다음과 같습니다.
나는 [...] 최상위 디렉토리를 제외하고 [...] 기본 디렉토리에 tar를 배치해야합니다.
주석의 첫 부분은별로 의미가 없습니다. tar 파일에 현재 디렉토리가 포함되어 있으면 해당 아카이브에서 파일을 추출 할 때 생성되지 않습니다. 정의에 따라 현재 디렉토리가 이미 존재하기 때문입니다 (매우 이상한 상황 제외). ).
주석의 두 번째 부분은 다음 두 가지 방법 중 하나로 처리 할 수 있습니다.
- 또는
/tmp
가능한 위치 중 하나 인 다른 위치에 파일을 만든 다음 완료되면 원래 위치로 다시 이동합니다.
- 또는 : GNU Tar를 사용하는 경우
--exclude=workspace.tar.gz
옵션을 사용하십시오 . 뒤의 문자열 =
은 패턴입니다. 예는 가장 단순한 패턴입니다. 정확히 일치합니다. --exclude=./workspace.tar.gz
권장 사항과 달리 현재 디렉토리에서 작업 중인지 지정해야 할 수 있습니다 . --exclude=workspace/workspace.tar.gz
제안 된대로 한 수준 위로 작업 중인지 지정해야 할 수 있습니다 . 제외 할 tar 파일이 여러 개인 경우 *
에서와 같이 ' '를 사용 --exclude=./*.gz
합니다.