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
คำอธิบายผิด ไม่สำคัญที่~จะถูกขยายโดยเชลล์ สิ่งที่สำคัญคือ-Cการเปลี่ยนไดเรกทอรีทำงานปัจจุบันตามที่อธิบายไว้ในanwerโดย Lekensteyn
Piotr Dobrogost

1
ไม่ - ดูคำถามต้นฉบับ - อาร์กิวเมนต์สุดท้ายคือเส้นทางที่สมบูรณ์
symcbean

แล้วอะไรล่ะ อินสแตนซ์ทั้งสองของ~ถูกขยายและการเรียกใช้ทั้งหมดไม่ทำงานอย่างที่คาดไว้เนื่องจากอาร์กิวเมนต์สุดท้ายในกรณีที่ใช้-Cควรได้รับเป็นเส้นทางสัมพัทธ์ แต่แทนที่จะได้รับเป็นเส้นทางที่แน่นอน การใช้~ที่นี่ไม่สำคัญเลย
Piotr Dobrogost

11

-C new_cwdnew_cwdเปลี่ยนไดเรกทอรีการทำงานปัจจุบัน new_cwdข้อโต้แย้งต่อไปนี้จะมีการประเมินแล้วเมื่อเทียบกับ

tar czf ~ / files / wp / my-page-order.tar.gz -C ~ / webapps / zers / wp-content / ปลั๊กอิน / my-page-order


4

โซลูชัน GNU ที่ไม่ใช่ถ้าtarไม่มี-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 -zถึงเปลี่ยนไปtar | gzip? (4) ตราบใดที่คุณกำลังจะใช้&&คุณควรใช้&&หลังจากpushdนั้นเช่นกัน
G-Man กล่าวว่า 'Reinstate Monica'

(1) คุณพูดถูก (2) จริงเหรอ? อันไหนดี? (3) นี่คือประเด็น: tar รุ่น GNU ที่ไม่ใช่ (เช่นบน Unix) ไม่มี-z (4) ฉันอาจใช้&&สคริปต์ แต่ฉันคิดว่านี่ไม่จำเป็นใน "one liner"
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'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.