ฉันจะเรียกคืนคำสั่ง tar ต่อไปซึ่งถูกฆ่าได้อย่างไร


11

ผมทำ: และผมต้องฆ่ามันด้วยtar -cvf ctrl-Cฉันรู้ว่าฉันควรจะทำCtrl-Zแล้วนำกลับมาทำงานเบื้องหน้า ... แต่มันไม่ใช่เรื่อง

ฉันสามารถดำเนินการต่อจากจุดที่ฉันหยุดงานได้หรือไม่


มีไฟล์ tar ที่ไม่สมบูรณ์ในตำแหน่งปลายทางหรือไม่
Karthik T

ใช่มี tar ที่ไม่สมบูรณ์
mthpvg

คำตอบ:


11

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

เปลี่ยน INFILES และ OUTFILE เป็นชื่อที่ถูกต้องในบรรทัดต่อไปนี้

INFILES="my folder"; OUTFILE="archive.tgz"; SIZE="$(wc -c < $OUTFILE)"; tar -cz --to-stdout "$INFILES" | tail -c +$(($SIZE+1)) >> "$OUTFILE"

คำอธิบาย:

SIZE="$(wc -c < $OUTFILE)" # รับขนาดปัจจุบันของไฟล์เก็บถาวร

tar -cz --to-stdout "$INFILES" |# เริ่มสร้างการเก็บถาวรและส่งออกไปยังtailคำสั่ง

tail -c +$(($SIZE+1)) >> # ไม่ต้องสนใจข้อมูลก่อน $ SIZE + 1 และกลับสู่การเก็บถาวร $ OUTFILE ที่เหลือ


2
ฉันคิดว่ามันเร็วกว่าแค่รีสตาร์ทกระบวนการ tar เพราะมันไม่ได้เขียนอะไรลงดิสก์จริงหรือ
Tyler

2

วิธีการแก้ปัญหาที่ดีที่สุดจะลบไฟล์ tar และเริ่มต้นกระบวนการใช้ได้กับและต่อท้ายด้วยnohup &หรือคุณสามารถเรียกใช้และการใช้งานที่เป็นยกเว้นสำหรับใหม่tar -tfvtar -cvf


2
tar -cvfจะเขียนทับไฟล์ที่มีอยู่ คุณหมายถึงtar -rvfอะไร นอกจากนี้ไฟล์สุดท้ายที่ถูกเขียนไปยังไฟล์เก็บถาวรนั้นอาจไม่สมบูรณ์
Gilles 'หยุดความชั่วร้าย'

ดังนั้นความคิดคือการทำรายการไฟล์ที่มีอยู่ใน tarball แล้วลบไฟล์สุดท้ายที่อาจไม่สมบูรณ์ จากนั้นเรียกใช้ a tar -rvf?
mthpvg


1

สิ่งที่ฉันทำในกรณีที่ฉันมีtarไฟล์เก็บถาวรไม่สมบูรณ์ฉันสร้างรายการไฟล์ในไฟล์เก็บถาวร:

tar tf archive.tar | sed -e '/\/$/d' -e x -e '/^$/d' >files-done

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

จากนั้นเพียงส่งfiles-doneรายการผ่านตัวเลือก -X ไปยังtarคำสั่งใหม่:

tar cfvX archive2.tar files-done SOURCEDIR

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

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