Score:1

GNU tar - อัปเดตไฟล์ tar เขียนทับไฟล์ต้นฉบับในบรรทัดคำสั่ง (ซึ่งทำได้โดยการลากและวางใน Archive Manager)

ธง cn

ฉันต้องการอัปเดตไฟล์ tar ด้วยเนื้อหาบางส่วนที่แก้ไขโดยเขียนทับไฟล์ต้นฉบับในสคริปต์

ฉันเหนื่อย น้ำมันดิน -u, -ก และ -รแต่ไม่มีใครทำในสิ่งที่ฉันต้องการ ฉันยังพยายามด้วย --เขียนทับ.

การทดสอบอย่างง่าย:

ซีดี ~
การทดสอบ mkdir
เสียงสะท้อน > test1.txt
mkdir test_dir
ซีดี test_dir
แถบเสียงสะท้อน> test2.txt
ซีดี ../..
การทดสอบ tar cvf การทดสอบ tar
tar tvf test.tar # ตรวจสอบเนื้อหา
echo barbarbar >> test/test_dir/test2.txt
tar rvf test.jar ทดสอบ # หรือ Avf หรือ uvf ก็เหมือนกัน: ไฟล์ที่แก้ไขจะไม่เขียนทับไฟล์ต้นฉบับใน tar
  • -u -- เขียนทับ ในทางทฤษฎีจะ "อัปเดต" แต่จริงๆ แล้วเป็นเพียงการต่อท้ายและไม่ต่อท้ายไฟล์ที่เปลี่ยนแปลง ดังนั้นฉันจึงเห็นสอง ทดสอบ 1.txt และหนึ่ง ทดสอบ 2.txt มีในน้ำมันดินด้วย ทดสอบ 2.txt เป็นคนเก่า
  • -A -- เขียนทับ ในทางทฤษฎีจะต่อท้าย แต่เกิดข้อผิดพลาด: tar: ทดสอบ: อ่านข้อผิดพลาดที่ไบต์ 0 ขณะอ่าน 1024 ไบต์: เป็นไดเรกทอรี tar: ข้อผิดพลาดไม่สามารถกู้คืนได้: ออกทันที
  • -r -- เขียนทับ ในทางทฤษฎีจะ "ต่อท้าย" แต่จะต่อท้ายเท่านั้น และไม่มีการเขียนทับ ดังนั้นฉันจึงเห็นสอง ทดสอบ 1.txt และสอง ทดสอบ 2.txt ในน้ำมันดิน

ฉันคิดว่า: ตกลงแล้ว tar ไม่รวมถึงความเป็นไปได้ในการอัปเดต tar ในสถานที่ แต่ฉันจำได้ว่าสามารถทำได้ง่าย ๆ โดยลากโฟลเดอร์ใหม่ไปยังไฟล์ tar ใน Gnome (ฉันคิดว่าสิ่งนี้จัดการโดย "Archive Manager") ดังนั้นอย่างน้อยก็เป็นไปได้

ฉันจะเขียนทับไฟล์ใน tar ในบรรทัดคำสั่ง/สคริปต์ได้อย่างไร

SaveUkraine-StartPeaceTalk avatar
เนื้อหาที่เกี่ยวข้อง: https://www.gnu.org/software/tar/manual/html_node/Dealing-with-Old-Files.html
SaveUkraine-StartPeaceTalk avatar
ที่เกี่ยวข้อง: https://www.linuxquestions.org/questions/linux-newbie-8/how-to-overwrite-existing-files-by-using-tar-command-remove-extra-files-4175489175/#post5087034
WesternGun avatar
cn flag
ไม่ มันไม่ได้แก้ปัญหาของฉัน ได้โปรด ถ้าคุณต้องการความช่วยเหลือจริง ๆ ให้ทดสอบก่อน: `-u` ในลิงก์นั้นจะเพิ่มไฟล์อื่นที่มีชื่อเดียวกัน ถ้าฉันลบโดยใช้ชื่อ มีสองไฟล์ชื่อเดียวกัน ฉันจะรู้ได้อย่างไรว่าไฟล์ที่ฉันลบคือไฟล์ที่ฉันไม่ต้องการ ฉันหมายความว่า มีเหตุผลที่ฉันถามที่นี่ เพราะฉันไม่พบสิ่งใดที่ Google ใช้งานได้จากที่อื่น
ru flag
คุณทั้งคู่ไปคลายร้อนกันเถอะ ความคิดเห็นเกี่ยวกับคำถามนี้ถูกล็อคในสัปดาห์หน้าเพื่อหยุดการทะเลาะวิวาทของคุณสองคน
Score:2
ธง cn

คุณสามารถสร้างสคริปต์ที่จะสร้าง tarball อื่นแทนการอัปเดตต้นฉบับ จากนั้นลบต้นฉบับออกและเปลี่ยนชื่อใหม่เป็นต้นฉบับ...

วิธีที่แอพ "ตัวจัดการไฟล์เก็บถาวร" อาจทำสิ่งนี้เป็นขั้นสูงกว่าเล็กน้อยและฉันจะไม่พยายามเลียนแบบพฤติกรรมนั้นใน bash แต่นั่นไม่ได้หมายความว่าคุณไม่ควรลอง...

WesternGun avatar
cn flag
ใช่ นี่คือสิ่งที่ฉันอยากลอง ขอบคุณ ฉันจะลบไฟล์ต้นฉบับออกจาก tar และเพิ่มไฟล์ที่แก้ไข
Score:0
ธง cn

ฉันพบย่อหน้านี้ใน GNU น้ำมันดิน doc ดังนั้นจึงไม่รองรับการเขียนทับ น้ำมันดิน. ฉันจะลบไฟล์ต้นฉบับออกจาก tar และเพิ่มไฟล์ที่แก้ไข

https://www.gnu.org/software/tar/manual/html_node/how-to-update.html#how-to-update

4.2.3.1 วิธีอัปเดตไฟล์เก็บถาวรโดยใช้ â--updateâ

คุณต้องใช้อาร์กิวเมนต์ชื่อไฟล์กับการดำเนินการ â--updateâ (â-uâ) หากคุณไม่ระบุไฟล์ใดๆ tar จะไม่ดำเนินการกับไฟล์ใดๆ และจะไม่บอกคุณว่ามันไม่ได้ทำอะไรเลย (ซึ่งอาจทำให้คุณสับสน)

หากต้องการดูตัวเลือก â--updateâ ในที่ทำงาน ให้สร้างไฟล์ใหม่ âคลาสสิกâ ในไดเร็กทอรีการฝึกของคุณ และข้อความเพิ่มเติมในไฟล์ âbluesâ โดยใช้โปรแกรมแก้ไขข้อความใดๆ . จากนั้นเรียกใช้ tar ด้วยการดำเนินการ âupdateâ และระบุตัวเลือก â--verboseâ (â-vâ) โดยใช้ชื่อไฟล์ทั้งหมดในไดเร็กทอรี âpracticeâ เป็นอาร์กิวเมนต์ชื่อไฟล์:

$tar --update -v -f collection.tar บลูส์โฟล์คร็อคคลาสสิค
บลูส์
คลาสสิก
$

เนื่องจากเราได้ระบุโหมดรายละเอียด tar จึงพิมพ์ชื่อไฟล์ที่กำลังทำงานอยู่ ซึ่งในกรณีนี้คือชื่อของไฟล์ที่จำเป็นต้องอัปเดต หากคุณเรียกใช้ âtar --listâ และดูที่ไฟล์เก็บถาวร คุณจะเห็น âbluesâ และ âclassicalâ ที่ส่วนท้าย จะมีทั้งหมดสองเวอร์ชันของสมาชิก âbluesâ; อันที่อยู่ท้ายสุดจะใหม่กว่าและใหญ่กว่า เนื่องจากคุณได้เพิ่มข้อความก่อนที่จะอัปเดต

เหตุผลที่ tar ไม่เขียนทับไฟล์ที่เก่ากว่าเมื่อทำการอัปเดต เนื่องจากการเขียนลงตรงกลางส่วนของเทปเป็นกระบวนการที่ยาก เทปไม่ได้ออกแบบมาให้ย้อนกลับ ดูส่วนเทปและสื่อเก็บถาวรอื่นๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเทป

แก้ไข: --ลบ ไม่ทำงาน/ช้ามาก ดูเหมือนว่าการลบไฟล์ออกจาก tar นั้นเป็นไปไม่ได้ อาจจะเป็นเพราะการออกแบบ ฉันคิดว่าฉันต้องแตก/ลบ/บรรจุใหม่ หรือ: https://unix.stackexchange.com/questions/68732/remove-files-from-tar-archive แต่ฉันยังไม่รู้วิธี

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา