상대 경로가있는 tar


24

상대 경로를 사용하여 tar를 사용하여 아카이브를 만들려고합니다. 다음 명령을 사용합니다.

tar czf ~/files/wp/my-page-order.tar.gz -C ~/webapps/zers/wp-content/plugins/ ~/webapps/zers/wp-content/plugins/my-page-order

그러나 보관 된 파일에는 여전히 절대 경로가 있습니다. 상대 경로와 함께 tar를 사용하려면 어떻게해야합니까?


답변:


24

'~'는 쉘에 의해 확장됩니다. -C와 함께 '~'를 사용하지 마십시오.

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~ \
       webapps/zers/wp-content/plugins/my-page-order

(tar에는 webapps / zers / wp-content / plugins / my-page-order 경로가 포함됩니다) 또는

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~/webapps/zers/wp-content/plugins \
       my-page-order

(tar에는 내 페이지 순서 경로가 포함됩니다)

아니면 그냥 먼저 CD를 ....

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order

2
설명이 잘못되었습니다. 여기서 ~ 는 쉘로 확장 된다는 것은 중요하지 않습니다 . 중요한 것은 Lekensteyn의 anwer-C 에서 설명한 것처럼 현재 작업 디렉토리 를 변경 한다는 것입니다.
Piotr Dobrogost

1
아니요-원래의 질문을 살펴보십시오. 마지막 주장은 절대 경로입니다.
symcbean

그래서 무엇? ~의 두 인스턴스가 모두 확장되고 전체 호출이 예상대로 작동하지 않고 사용하는 경우 마지막 인수가 -C상대 경로로 제공되어야하지만 대신 절대 경로로 제공되기 때문입니다. ~를 사용하는 것은 전혀 중요하지 않습니다.
Piotr Dobrogost

11

-C new_cwd현재 작업 디렉토리를로 변경합니다 new_cwd. 다음 인수는에 대해 평가됩니다 new_cwd.

tar czf ~ / files / wp / my-page-order.tar.gz -C ~ / webapps / zers / wp-content / plugins / my-page-order


4

옵션 tar이없는 경우 비 GNU 솔루션 -z:

pushd ~/files/wp; tar cvf - my-page-order | gzip > my-page-order.tar.gz && rm -rf my-page-order; popd

편집 (포함 &&여부 rm) :

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd

(1) 질문은 아무 말도하지 않습니다 rm. 왜 답에 포함합니까? (2) 귀하의 답변이 잘못된 디렉토리를 보관합니다. (3) 왜 변경 tar -ztar | gzip? (4)을 사용 &&하는 &&한, 후에도 사용해야 합니다 pushd.
G-Man, 'Reinstate

(1) 당신은 정말로 (2) 맞습니까? 어느 것이 좋은가요? (3) 이것이 핵심입니다. GNU 이외의 tar 버전 (예 : Unix)은 -z (4) &&스크립트에서 사용할 수 는 없지만 "한 줄"에서는 필요하지 않습니다.
Mattia72

(2) OP는 다음 ~/webapps/zers/wp-content/plugins/my-page-order과 같이 출력하여 아카이브하려고 합니다 ~/files/wp/my-page-order.tar.gz. 명령 아카이브 ~/files/wp/my-page-order. (3) 왜 사용했는지 설명하기 위해 답변을 편집 해 주셔서 감사합니다 gzip.
G-Man, 'Reinstate Monica'8
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.