tar -xvf ลบไฟล์ที่มีอยู่ออกจากไดเรกทอรีหรือไม่?


10

ฉันมีเก็บ tar tar -xvfและฉันต้องการที่จะใช้
ในไฟล์เก็บถาวร tar นี้ฉันมีแผนผังไดเรกทอรีที่บรรจุไฟล์ไว้สองสามไฟล์ ในระบบโซลาริส 10 ของฉันไดเรกทอรีต้นไม้นี้มีอยู่แล้วและมีหลายไฟล์อยู่ในนั้น
ถ้าฉันแกะไฟล์เก็บถาวรเป็นทรีไดเรกทอรีทั้งหมดจะถูกเขียนทับหรือเป็นเพียงไฟล์ที่มีอยู่ในไฟล์เก็บถาวรที่เขียนทับ?
ไฟล์ที่ไม่มีตัวแทนในไฟล์เก็บถาวรจะถูกลบหรือไม่


คุณสามารถสร้างการทดสอบ. tar และไดเรกทอรีการทดสอบและลองใช้ ... คำตอบที่คุณคิดขึ้นเองจะคงอยู่นานกว่าคำตอบที่คุณได้รับจากทุกคนที่นี่
Jarvin

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

คำตอบ:


6

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

ผบ. /test

/1/a
c

เอกสารเก่า test.tar

/1/b
d

อาจจะถูกรวมเข้ากับ:

/1/a
/1/b
c
d

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

tar -xvkf test.tar

@BP: การเขียนทับอาจขึ้นอยู่กับเชลล์เป็น csh (ยังคงเชลล์เริ่มต้นบน Sun?) มีตัวแปรเชลล์ "noclobber" ซึ่งเมื่อตั้งค่าจะป้องกันพฤติกรรมการเขียนทับโดยไม่ตั้งใจ
hotei

ขอบคุณ BloodPhilia และ hotei ฉันได้ทำการทดสอบกับระบบของฉันและ tar -xvf เขียนทับไฟล์ที่มีอยู่แล้วและเพิ่มไฟล์ที่ไม่มีอยู่ สิ่งที่ฉันอยากรู้คือหากมีความเป็นไปได้ที่ไดเรกทอรีทั้งหมดควรถูกเขียนทับและทำให้สูญเสียไฟล์ที่อยู่ในระบบของฉันในไดเรกทอรีนั้น แต่ไม่ได้อยู่ในไฟล์เก็บถาวร? ตัวอย่างเช่น: ฉันมีใน dir.tar dir / file2 ในระบบของฉันฉันมี dir / file1, dir / file2 และ dir / file3 เป็นไปได้ไหมว่าถ้าฉันทำ tar -xvf dir.tar dir ทั้งหมดจะถูกเขียนทับและจะไม่มีไฟล์ 1 และ file3 อีกต่อไป?
เฟลิเซีย

@hotei: noclobber(ซึ่งมีอยู่ใน POSIX shells btw) มีผลกับไฟล์ที่ถูกเปลี่ยนเส้นทางไปด้วย>fooในเชลล์ ไม่มีผลกับ tar
Gilles 'หยุดชั่วร้าย'

@hotei noclobber ป้องกันไม่ให้คุณเขียนทับไฟล์ผ่านการเปลี่ยนเส้นทางในเชลล์ ดังนั้นecho foo > bar.txtจะไม่เขียนทับ bar.txt หากมีอยู่ มันไม่มีผลกับสิ่งที่โปรแกรมเช่น tar จะเขียนทับ
KeithB

1
@ Felicia: ตาม Single Unix tar จะไม่ลบไฟล์ที่ไม่ได้อยู่ในไฟล์เก็บถาวร มันจะเขียนทับไฟล์ที่มีอยู่ด้วยเนื้อหา (แต่ไม่ใช่โหมด) จากไฟล์เก็บถาวร อาจจะมี Tars ไม่สอดคล้องรอบ แต่ผมสงสัยใด ๆ dir/file1ของพวกเขาจะเขียนทับไฟล์ที่ไม่เกี่ยวข้องเช่น
Gilles 'หยุดความชั่วร้าย'

0

วิธีที่ง่ายที่สุดคือการสร้างไดเรกทอรีใหม่ที่ว่างเปล่าไปที่ซีดีและแตกไฟล์ที่นั่น คุณต้องระวังแม้ว่าไฟล์ที่คลายบีบอัดนั้นจะสัมพันธ์กัน (ขึ้นต้นด้วย. /) และไม่สมบูรณ์ (ขึ้นต้นด้วย /) ไพพ์สารบัญผ่านน้อยลงเพื่อดูว่ากรณีใดที่คุณไม่รู้ (tar -tvf tar_filename | less)

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

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