내 Linux 컴퓨터에 다음 폴더가 있습니다.
./myFolder
./tmp
./packages
./zips
compress.sh
tar -czf ./zips/someFile.tar.gz ./tmp/someFolder
.folder 에서 생성 했지만 compress.sh
결과 중첩은 zip 파일 내부에서 발생합니다.
. -> tmp -> 폴더
이 파일을 열 때 내부가 아닌 someFolder
내부에 있도록 어떻게 압축할 수 있습니까?someFolder
tmp
.
답변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