การซิปในขณะที่เก็บไดเรกทอรีที่เกี่ยวข้องจากที่ใดก็ได้


0

zipพยายามที่จะได้รับการทำงานจาก ฉันต้องการซิปทุกอย่างซ้ำ ๆ ในไดเรกทอรีที่เฉพาะเจาะจงและรักษาโครงสร้างไดเรกทอรีภายในจากเพียงแค่ไดเรกทอรีนั้น แต่ไม่มีเส้นทางที่ผ่านการรับรองโดยสมบูรณ์เป็นส่วนหนึ่งของการเก็บถาวร

สมมติว่าฉันมี/path/to/test/tmp/และฉันต้องการทุกอย่างtmp/ที่จะซิปราวกับว่าฉันใช้คำสั่งจากภายในโฟลเดอร์ที่

การ-rตั้งค่าสถานะได้รับสิ่งที่ฉันต้องการ แต่รวมถึงข้อมูลเส้นทางเหนือไดเรกทอรีที่ฉันต้องการขึ้นอยู่กับที่ฉันเรียกใช้:

user@MBP:~/path/to/test$ zip -r myarchive.zip tmp/
  adding: tmp/foo.txt (deflated 68%)
  adding: tmp/bar/bar.txt (deflated 41%)
  adding: tmp/baz/baz/baz.txt (deflated 92%)

-jธงตัดทุกอย่าง แต่ชื่อไฟล์:

user@MBP:~/path/to/test$ zip -rj myarchive.zip tmp/
  adding: foo.txt (deflated 68%)
  adding: bar.txt (deflated 41%)
  adding: baz.txt (deflated 92%)

สิ่งที่ฉันต้องการคือสิ่งที่จะให้สิ่งนี้กับฉัน:

adding: foo.txt (deflated 68%)
adding: bar/bar.txt (deflated 41%)
adding: baz/baz/baz.txt (deflated 92%)

แต่ฉันสามารถระบุให้เรียกใช้จากที่ใดก็ได้ ฉันพยายามที่จะเขียนสคริปต์นี้เป็น cron ฉันไม่สามารถหาสิ่งที่ฉันกำลังมองหาในหน้าคน ฉันจะดึงสิ่งนี้ออกนอกเหนือจากการเปลี่ยนไดเรกทอรีในสคริปต์ได้อย่างไร?


ดูเหมือนว่าตัวจัดการการเก็บถาวรสามารถทำได้ด้วยไฟล์ซิปการตรวจสอบแหล่งที่มาควรนำไปสู่การแก้ปัญหา แต่คุณแต่งงานกับ. zip แล้วจะไม่บันทึกคุณสมบัติไฟล์ linux ทั้งหมดไม่สนใจ tar ใช่ไหม
Xen2050

ฉันใช้ "zip" เป็นตัวยึดตำแหน่งทั่วไป กรณีการใช้งานจริงของฉันเกี่ยวข้องกับไฟล์. xlsx ผมอธิบายมันมากขึ้นที่นี่ การทดสอบของฉันระบุว่าการแทนที่ "\" ด้วย "/" โดยการเปิดออกและการบรรจุใหม่จะช่วยแก้ไขปัญหาเดิมได้ แค่พยายามทำให้ทุกอย่างเป็นสคริปต์ในตอนนี้
cognoscente

คำตอบ:


1

ดูเหมือนว่าzip(อย่างน้อยรุ่นจาก Info-ZIP ที่อยู่บนแพลตฟอร์มของฉัน) ไม่อนุญาตให้คุณทำเช่นนั้น (ไม่เหมือนtarซึ่งมี-C/ --directoryตัวเลือกตามที่ @ Xen2050 บอกใบ้)

แต่ฉันต้องถามมันแย่มากไหมที่จะเปลี่ยนไดเรกทอรีในสคริปต์ของคุณ? โดยเฉพาะอย่างยิ่งถ้าคุณสามารถทำได้ใน subshell และไม่ส่งผลกระทบต่อไดเรกทอรีการทำงานปัจจุบันของสคริปต์ (อธิบายโดยละเอียดในคำตอบ SO นี้ ):

pwd
(cd /path/to/test/tmp; zip -r myarchive.zip .)
pwd    # prints the same as in line 1

โปรดทราบว่าการดำเนินการนี้จะเก็บไฟล์ซิปสุดท้าย/path/to/test/tmpไว้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.