tar는 폴더를 압축하지만 중첩된 구조를 만듭니다.

tar는 폴더를 압축하지만 중첩된 구조를 만듭니다.

내 Linux 컴퓨터에 다음 폴더가 있습니다.

./myFolder
    ./tmp
    ./packages
    ./zips
    compress.sh

tar -czf ./zips/someFile.tar.gz ./tmp/someFolder.folder 에서 생성 했지만 compress.sh결과 중첩은 zip 파일 내부에서 발생합니다.

. -> tmp -> 폴더

이 파일을 열 때 내부가 아닌 someFolder내부에 있도록 어떻게 압축할 수 있습니까?someFoldertmp.

답변1

다음을 시도해 볼 수 있습니다.

tar -czf ./zips/someFile.tar.gz -C ./tmp/ someFolder

답변2

매개변수를 사용 -C하거나--directory

tar -czf ./zips/someFile.tar.gz -C ./tmp someFolder

~에서man tar

-C, --directory DIR
      change to directory DIR

% ls -og
total 4
-rw-rw-r-- 1    0 Mai 21 18:39 bar
drwxrwxr-x 2 4096 Mai 21 18:39 foo

tar -cvf ../sample.tar -C /home/user/tmp .

tar -tvf ../sample.tar 
drwxrwxr-x user/user 0 2015-05-21 18:39 ./
-rw-rw-r-- user/user 0 2015-05-21 18:39 ./bar
drwxrwxr-x user/user 0 2015-05-21 18:39 ./foo/

답변3

tar명령은 압축되지 않습니다. 심지어 깃발도 없습니다 -z. 그러나 다양한 파일/폴더를 수집하고 선택적으로 결과를 압축합니다. 반면에 zip각 파일은 압축되어 아카이브에 추가됩니다. zip그리고 tar다른 압축 알고리즘을 사용하십시오.

이것GNU tar 매뉴얼 페이지이를 수행할 수 있도록 디렉토리 변경 -C( ) 에 대한 플래그를 표시합니다.--directory

tar czfC zips/someFile.tar.gz tmp someFolder

--transform옵션을 사용하여 선행을 제거 할 수도 있습니다.tmp/

tar czf zips/someFile.tar --transform 's#^tmp/##' tmp/someFolder

관련 정보