상위 디렉터리 없이 tar 아카이브 만들기

상위 디렉터리 없이 tar 아카이브 만들기

내 스크립트에 대한 그래픽 프로그램을 만들려고 합니다.

스크립트에서는 tar를 사용하여 tar 아카이브를 만듭니다.

그래픽 프로그램에서 tar 아카이브를 생성할 파일의 전체 이름을 얻습니다.

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

내 tar 아카이브에는 home, 사용자 이름, dir1, dir2 및 selecteddir이 포함되어 있으며 tar에서 selecteddir만 포함하는 아카이브를 생성하고 싶습니다.

답변1

-C옵션을 사용하여 tar이 작업을 수행 할 수 있습니다 .

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

매뉴얼 페이지에서 tar:

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

답변2

이 문제를 해결하려면 두 가지 방법을 사용할 수 있습니다.

내 생각엔 첫 번째가 더 쉬운 것 같아. cd압축하려는 디렉토리 바로 위로 이동 하세요 . 이 경우에는 dir2.

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

--transform두 번째 방법은 표현식을 가져와 sed파일 이름에 대해 실행하는 옵션을 사용하는 것입니다 . 참고: 표현식 /내에서 이스케이프 해야 합니다 sed.

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

답변3

먼저 작업 디렉토리를 입력하고,

cd /your/working/directory/ 

그런 다음 마법을 사용하세요 *:-)

tar -cvf temp.tar *

답변4

도트 디렉토리를 방지하려면 사실 이후에 도트 디렉토리를 삭제할 수 있습니다.

tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz

다음 내용만 포함하는 아카이브가 생성됩니다.콘텐츠/path/to/dir.

관련 정보