อย่าสร้างไฟล์ tar ในไดเร็กทอรีที่คุณกำลังบรรจุ:
tar -czf /tmp/workspace.tar.gz .
ทำเคล็ดลับยกเว้นว่ามันจะแตกไฟล์ทั้งหมดจากไดเร็กทอรีปัจจุบันเมื่อคุณแตกไฟล์ ดีกว่าที่จะทำ:
cd ..
tar -czf workspace.tar.gz workspace
หรือหากคุณไม่ทราบชื่อไดเรกทอรีที่คุณอยู่:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(สิ่งนี้ถือว่าคุณไม่ได้ติดตาม symlink เพื่อไปยังที่ที่คุณอยู่และเชลล์ไม่พยายามเดาคุณเป็นครั้งที่สองโดยการกระโดดถอยหลังผ่าน symlink - bash
ไม่น่าไว้วางใจในแง่นี้หากคุณต้องกังวลเกี่ยวกับเรื่องนั้น ใช้cd -P ..
ทำไดเร็กทอรีการเปลี่ยนแปลงทางกายภาพโง่ที่มันไม่ใช่พฤติกรรมเริ่มต้นในมุมมองของฉัน - สับสนอย่างน้อยสำหรับผู้ที่cd ..
ไม่เคยมีความหมายอื่น)
ความคิดเห็นหนึ่งในการสนทนากล่าวว่า:
ฉัน [... ] จำเป็นต้องยกเว้นไดเร็กทอรีด้านบนและฉัน [... ] จำเป็นต้องวาง tar ในไดเร็กทอรีฐาน
ส่วนแรกของความคิดเห็นไม่สมเหตุสมผล - หากไฟล์ tar มีไดเร็กทอรีปัจจุบันจะไม่ถูกสร้างขึ้นเมื่อคุณแยกไฟล์จากที่เก็บถาวรนั้นเนื่องจากตามคำนิยามแล้วไดเรกทอรีปัจจุบันมีอยู่แล้ว (ยกเว้นในสถานการณ์ที่แปลกมาก ).
ส่วนที่สองของความคิดเห็นสามารถจัดการได้ด้วยวิธีใดวิธีหนึ่ง:
- อย่างใดอย่างหนึ่ง: สร้างไฟล์ที่อื่น -
/tmp
เป็นตำแหน่งเดียวที่เป็นไปได้ - จากนั้นย้ายกลับไปยังตำแหน่งเดิมหลังจากเสร็จสิ้น
- หรือ: หากคุณใช้ GNU Tar ให้ใช้
--exclude=workspace.tar.gz
ตัวเลือก สตริงหลัง=
เป็นรูปแบบ - ตัวอย่างเป็นรูปแบบที่ง่ายที่สุด - การจับคู่แบบตรงทั้งหมด คุณอาจต้องระบุ--exclude=./workspace.tar.gz
ว่าคุณกำลังทำงานในไดเร็กทอรีปัจจุบันซึ่งขัดกับคำแนะนำหรือไม่ คุณอาจต้องระบุ--exclude=workspace/workspace.tar.gz
ว่าคุณกำลังดำเนินการหนึ่งระดับตามที่แนะนำหรือไม่ หากคุณมีไฟล์ tar หลายไฟล์ที่จะแยกออกให้ใช้ ' *
' ในรูปแบบ--exclude=./*.gz
.