폴더 이름에 포함 된 디렉토리가없는 폴더 (tar) 압축


21

tar명령 으로 폴더를 압축하려고합니다 .

압축하려고하면 정상적으로 작동합니다. 파일 이름에 문제가 있습니다.

소스 경로 :

/data/file/

목적지 경로 :

/data/repo/temp/file.tar.gz

tar zcvf $srcpath $destinationpath

다른 폴더에서 명령을 실행 중이며 폴더를 추출하는 동안 파일 폴더 대신 모든 하위 디렉토리를 가져옵니다.


1
tar 구문은 다음과 같습니다. tar zcvf file.tar.gz /path/dir/to/compress어쩌면 명령을 변경해야 tar zcvf $destinationpath $srcpath하지만 필요한 것이 확실하지 않습니다. tar 명령에서 기대하는 예를 들어 질문을 자세히 설명해 주시겠습니까?
Lety

의견 주셔서 감사합니다, 내 문제는 당신이 여기에 공유 한 의견 "tar zcvf file.tar.gz / path / dir / to / compres"다음과 같습니다. 우리가 같은 디렉토리에있는 경우 잘 작동합니다 "파일"내 경우는 우리는 다른 디렉토리에서 일하고 있습니다 : / home / testuser1 / file : file 압축하지 않고 집이 아닌 루트에서 명령을 실행하는 폴더이므로 폴더에 대한 전체 경로를 제공해야 할 수도 있습니다. 대신 파일 폴더의 / testuser1 / 파일 / 집에있는 모든 하위 디렉토리를 얻고있다
시사 라만

아마도 오타 일 것입니다. 그러나 귀하의 예에서는 소스와 대상을 혼합했습니다.
Jacob Vlijm

답변:


49

가장 쉬운 방법은 먼저 디렉토리로 cd하는 것입니다.

cd /path/to/containing/folder && tar -zcvf tarfile.tar.gz foldername_tocompress

(포함) 폴더의 디렉토리가 압축 파일의 루트 디렉토리가되도록합니다.

조금 더 발전된 것은 -C 옵션을 사용하는 것입니다.

tar -zcvf tarfile.tar.gz -C /path/to/foldername_tocompress .

이렇게하면 tar.gz현재 (작동중인) 디렉토리에 파일이 모두 들어 있습니다 foldername_tocompress(점, 모든 파일 / 폴더가 포함되어야 함을 명심하십시오).


4
두 번째 명령의 끝에있는 점은 현재 디렉토리의 모든 파일을 포함 할 것입니다.
David Duncan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.