부모를 포함하지 않는 X 디렉토리를 tar하고 싶습니다


9
tar cvf /var/lib/backup/sample.tar /home/user/.project

그러나 추출하면 부모도 얻습니다.

/backup/
  - /home/
     - /user/
        - .project/

이 tar 명령은 부모에 다른 항목이 포함되어 있지 않기 때문에 작동합니다 ( user예 : 다른 폴더 ).

프로그래밍 방식 으로이 작업을 수행하려고하므로 현재 작업 디렉토리를 변경하는 /home/user/것은 실제로 옵션이 아닙니다. 그렇게 할 수 있습니까?

답변:


17

-C옵션을 사용하여 변경 /home/user하기 전에 디렉토리 로 변경 하거나 --strip-components 2추출시 사용할 수 있습니다 .

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2

1
+1 cool .. 맨 페이지를-C 살펴 보았을 때 스위치를 찾았 지만 이해가되지 않았습니다. 새로운 것을 배웠습니다.
Levon

@ 케빈 감사합니다. C 옵션은 완벽하게 작동합니다. 감사합니다!
User007

2
나는 이렇게 작동하지 못했습니다. gnu.org/software/tar/manual/tar.html#SEC118 에 따르면 다음 형식으로 성공했습니다. tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar

2

난 당신이 경우라고 생각 cd만들려하는 최상위 디렉토리 tar의 파일을,이 문제가 없어야합니다. 즉,

cdto userand tarup .project.. /var/... 이전 과 같이 tar 파일의 대상을 지정할 수 있습니다 .

또는 원하지 않는 이유 cduser있습니까?


예. 그것은 하나의 해결책이 될 것입니다. 감사. 그러나 더 좋은 방법이 있기를 바랍니다. 이 프로그래밍 방식의 동맹을 다루고 싶습니다 os.chdir(base_dir). 항상 코드에서 발행하고 싶지 않습니다. :)이 방법이 없으면 좋을 것입니다. 감사합니다
User007 2016 년

@ User007 아 .. 알았어. 해당 요구 사항을 포함하도록 질문을 업데이트 할 수 있습니다.
그건

감사. 예. 방금 질문을 업데이트했습니다. 오, 그것은 내 정체성을 숨기고있다
User007

1
@ User007은 007 파트를 좋아합니다. 그리고 여러분도 파이썬에서 일하고있는 것 같습니다 (내가 가장 좋아하는 것 중 하나입니다)
Levon

:) 예. 우리 친구 Kevin가 올바른 명령으로 나를 도와주었습니다. 그래서 나는 그에게 진드기를 줄 것이다. 하지만 난 당신을 upvoted. 감사!
User007
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.