ฉันใช้คำสั่ง tar เป็น
tar -cvf protTests.tar protTests/*
ไปยังtarไฟล์ทั้งหมดภายในโฟลเดอร์, protTests. แต่นี่รวมถึงลิงก์สัญลักษณ์ภายในโฟลเดอร์ซึ่งไม่ได้เป็นที่ต้องการ
มีตัวเลือกบรรทัดคำสั่งที่จะออก symlink ทั้งหมดหรือไม่
ฉันใช้คำสั่ง tar เป็น
tar -cvf protTests.tar protTests/*
ไปยังtarไฟล์ทั้งหมดภายในโฟลเดอร์, protTests. แต่นี่รวมถึงลิงก์สัญลักษณ์ภายในโฟลเดอร์ซึ่งไม่ได้เป็นที่ต้องการ
มีตัวเลือกบรรทัดคำสั่งที่จะออก symlink ทั้งหมดหรือไม่
คำตอบ:
คุณสามารถทำเช่นนี้เพื่อจัดหาtarรายการไฟล์ทั้งหมดที่อยู่ภายในprotTestsยกเว้นไฟล์ที่มี symlink:
find protTests -maxdepth 1 -mindepth 1 -not -type l -print0 |
tar --null --files-from - -cvf protTests.tar
อย่างไรก็ตามคำสั่งที่มีอยู่ของคุณ:
tar -cvf protTests.tar protTests/*
จะไม่เก็บถาวรไฟล์ทั้งหมดในprotTestsมันจะเก็บเฉพาะไฟล์ที่มีชื่อที่ไม่ได้ขึ้นต้นด้วย.(ไฟล์ที่ไม่ได้ซ่อน) *ไฟล์ประกอบ glob ข้ามที่มีชื่อขึ้นต้นด้วย.โดยการออกแบบ คำสั่งยังมีปัญหาที่หากprotTestsมีไฟล์จำนวนมาก (มากกว่าหลายพันไฟล์) จากนั้นprotTests/*สามารถขยายไปยังอาร์กิวเมนต์มากเกินไปเพื่อให้พอดีกับบรรทัดคำสั่ง
คำสั่งที่ง่ายกว่านี้จะไม่มีปัญหาเหล่านั้น:
tar -cvf protTests.tar protTests
starทางเลือกที่ดีและฉันได้ upvoted มันด้วยเหตุผลนั้น ฉันยังเห็นด้วยกับการคัดค้าน "ตัวละครตลก" แต่เนื่องจาก GNU tarไม่มี-0ตัวเลือกมันเป็นการแลกเปลี่ยน ฉันไม่เห็นด้วยกับการคัดค้านการปฏิบัติงานนั่นไม่ได้เกิดขึ้นจริงในสถานการณ์นี้
tarและbsdtarมี--files-fromและ--nullสิ่งที่ลบปัญหาเกี่ยวกับตัวละครตลก (ถ้ารวมกับfind's -print0หรือ-exec printf '%s\0' {} +) แต่ที่นี่คุณอาจต้องการเพิ่ม--no-recursionตัวเลือก paxการใช้งานบางอย่างยังมี-0ตัวเลือก
tarผมรู้สึกว่าด้ายความคิดเห็นนี้ไม่ได้เป็นสถานที่สำหรับการสนับสนุนสำหรับรุ่นที่แตกต่างกันของ กรุณานำไปแชท มันนานเกินไปแล้วและการอ่านเช่นสงครามศาสนา ณ จุดนี้ฉันไม่คิดว่ามันสำคัญกับรุ่นtarใดที่ใช้อยู่ เราไม่รู้ด้วยซ้ำว่า Unix ใช้งานอะไร
การใช้ tar ของฉันเป็นวิธีที่ดีที่สุด
star -cv -f out.tar -find protTests ! -type l
zsh: command not found: starเมื่อคุณพูดถึงอรรถประโยชน์ที่คุณรู้> 99% ของผู้อ่านของคุณจะไม่มีอยู่ในระบบของคุณให้อธิบายว่าจะรับได้จากที่ไหน และคุณต้องเปิดเผยความร่วมมือของคุณเมื่อคุณพูดถึงผลิตภัณฑ์ของคุณเอง (ไม่ว่าคุณจะโพสต์ลิงค์หรือไม่ดังนั้นคุณอาจโพสต์ลิงค์)
--files-fromนี่คือตัวเลือกจาก gtar ดังนั้นคุณจึงให้คำแนะนำดังกล่าวดีกว่าพูดถึงว่านี่เป็น gtar ที่เฉพาะเจาะจง ค้นหาไม่มีหลัก-notนี่คือ GNUism อื่นที่ไม่ใช่แบบพกพา โดยทั่วไปเป็นความคิดที่ดีที่จะใช้การค้นหาแบบแยกสาย สิ่งนี้อาจทำให้เกิดปัญหากับตัวละครตลกในชื่อไฟล์และมันให้ประสิทธิภาพที่ต่ำอย่างแน่นอนเนื่องจากทั้ง find และ tar จำเป็นต้องสแกนระบบไฟล์ ปัญหาเหล่านี้ใช้ไม่ได้กับโปรแกรมเช่น star ที่ใช้ libfind ดังนั้นจึงมีรหัสการค้นหารวมอยู่ด้วย