Linux: การระบุไดเร็กทอรีระดับบนสุดเมื่อสร้างไฟล์เก็บถาวร zip


17

ฉันมีโครงการที่มีโครงสร้างไดเรกทอรีปกติ (src /, bin /, ... ), เช่น

project-name/
|-- bin
|-- lib
|-- src
`-- Makefile

และต้องการสร้างไฟล์เก็บถาวรที่มีโครงสร้างไดเรกทอรีต่อไปนี้:

project-name-version/
|-- bin
|-- lib
|-- src
`-- Makefile

มีวิธีที่เรียบร้อยในการทำเช่นนี้ซึ่งหลีกเลี่ยงการสร้างไดเรกทอรีชั่วคราวproject-name/ที่อื่นแล้วคัดลอกไฟล์ภายในการเรียกzip -r ...ไดเรกทอรีชั่วคราวนั้นในที่สุด?

(โดยทั่วไปฉันกำลังมองหาคำนำหน้าเส้นทางบางชนิดหรือตัวเลือกเส้นทางสัมพัทธ์)

คำตอบ:


9

บางทีนี่อาจเกิดขึ้นกับคุณแล้ว แต่ทำไมไม่ใช้ลิงค์ sym แทนที่จะคัดลอกทุกอย่าง

ln -s project-name project-name-version

จากนั้นใช้งานzip -rผ่านลิงก์ sym ( zipจะยกเลิกการอ้างอิงลิงก์ sym โดยปริยาย) เมื่อเสร็จแล้วคุณสามารถrmลิงก์ sym บางทีมันไม่ใช่ทางออกที่หรูหราที่สุด แต่ฉันไม่รู้วิธีที่ชัดเจนในการทำzipโดยตรง


1
สิ่งนี้สามารถใช้งานได้tarหากคุณใช้-hแฟล็ก
Kyle Strand

(ฉันใช้zธงเช่นกันฉันไม่แน่ใจว่ามันจะส่งผลกระทบกับมันหรือเปล่า)
Kyle Strand

15

นี่เป็นคำแนะนำมากกว่าคำตอบ: ใช้Git !

หากคุณตั้งค่าที่เก็บGitสำหรับโครงการของคุณสิ่งทั้งหมดกลายเป็นเรื่องตรงไปตรงมา:

git archive HEAD --prefix=project-name-version/ \
    --format=zip -o project-name-version.zip

1
คำแนะนำที่ดีเยี่ยมขอบคุณ เอกสารประกอบการเก็บถาวร git: git-scm.com/docs/git-archive
Meglio

1
ในขณะที่ใช้การควบคุมเวอร์ชันเป็นความคิดที่ดีคำตอบนี้ไม่ตรงกับคำถามสำหรับกรณีทั่วไป
เรียกใช้

@Raim "นี่เป็นคำแนะนำมากกว่าคำตอบ: ใช้ Git!" เขียนที่นั่นตั้งแต่ 4 ปีขอบคุณที่ชี้ให้เห็น ...
cYrus

1
หากนี่ไม่ได้มีไว้เพื่อเป็นคำตอบควรแปลงเป็นความคิดเห็น
เรียกร้อง

1
@Gregor ผมคิดว่าเป็นพฤติกรรมที่พึงประสงค์เป็นไฟล์ดังกล่าวเป็นส่วนหนึ่งของโครงการต่อไปที่คุณสามารถใช้คุณลักษณะ Git เช่นสร้างไฟล์ชื่อที่มี.gitattributes .git* export-ignore
cYrus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.