상위 디렉토리를 포함하지 않고 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.

관련 정보