ฉันใช้คำสั่ง 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 ดังนั้นจึงมีรหัสการค้นหารวมอยู่ด้วย