มีวิธีสกัด `tar 'โดยไม่มีการอุดตันหรือไม่


12

มีวิธีการtarแยกโดยไม่ต้อง clobbering หรือไม่

ฉันกำลังติดตั้ง 12.04 และต้องการกู้คืนข้อมูลของฉันจาก 10.10 สิ่งใดที่เฉพาะเจาะจง 12.04 ที่ฉันต้องการเก็บไว้นั่นคือฉันไม่ต้องการtarให้มีการแยกรุ่น 'd 10.10 ถ้าฉันทำกู้คืนไฟล์ทั่วไปเช่น. bashrc จะถูกอุดตัน มีวิธีหลีกเลี่ยงสิ่งนี้หรือไม่?

แก้ไข: ฉันจะทราบว่าดิสก์อิมเมจ ISO 12.04 ที่บูตแล้วนั้นอนุญาตให้อัปเกรดจาก 10.10 (หรืออะไรก็ตาม) และมีการเก็บข้อมูลเก่าไว้ ฉันลองสิ่งนี้ แต่มันก็บ่นว่าแอพพลิเคชั่นบางตัวอาจจะเสียไปหลังจากการอัพเกรด ฉันตัดสินใจที่จะรีบูตและติดตั้งใหม่ทั้งหมด

คำตอบ:


14

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

หลังจากพูดว่าน้ำมันดินมีหลายตัวเลือกที่ดี ...

--keep-old-files

สิ่งนี้จะไม่เขียนทับไฟล์ที่มีอยู่

--keep-newer-files 

การดำเนินการนี้จะเก็บไฟล์ทั้งหมดที่มีการประทับเวลาใหม่กว่าเดิม

--no-overwrite-dir

สิ่งนี้จะทำให้เมทาดาทาของไดเรกทอรีที่มีอยู่ตามเดิม

คู่มือสำหรับ tar สามารถพบได้ที่นี่

แต่ฉันจะแนะนำให้แตกไฟล์ tar ลงบนสื่ออื่นและกู้คืนไฟล์เหล่านั้นด้วยตนเอง มันเป็นวิธีที่ปลอดภัยที่สุด


3
แม้จะมี --keep-newer files และ - no-overwrite-dir การแยกการสำรองข้อมูลระบบเก่าแบบเต็มไปยังระบบใหม่จะทำให้ระบบของคุณอยู่ในสถานะที่สับสนเนื่องจากไฟล์จำนวนมากที่ไม่ควรจะถูกแยกออกมา คุณควรเปิดไฟล์เก็บถาวรใน gui ด้วย file-roller และแตกไฟล์เฉพาะที่คุณต้องการไปยังโฮมไดเร็กตอรี่ของคุณ
psusi

ฉันเห็นด้วยตามบรรทัดสุดท้ายของฉันในคำตอบของฉัน :)
30912 Rinzwind

2
@ รินซ์วินคุณพูดถูกแล้วที่เก็บถาวรของฉันมีการออกแบบที่ผิดพลาด การแยกจำนวนมากและการยกเว้นไม่เพียงพอดังนั้นจึงเป็นระเบียบและเป็นอันตรายในการกู้คืนเนื่องจากจะเป็นการเขียนทับผู้ไม่ฝักใฝ่ฝ่ายใดลงบนแม่นยำ ที่เก็บถาวรถัดไปของฉันจะถูกรวมอย่างเคร่งครัด คำแนะนำของคุณเกี่ยวกับการคืนค่าด้วยตนเองเป็นสิ่งที่ดี
H2ONaCl

8

จากtar (1) :

 -k, --keep-old-files
       don't replace existing files when extracting

ดูเหมือนจะชัดเจนสำหรับฉัน หากไฟล์ใน tarball จะถูกเก็บไว้ค่อนข้าง homedir เก่าของคุณ:

tar xvkf backup.tar.gz -C ~

มันยังทำงานในขณะที่บีบอัด
nyxee

@nyxee นอกจากนี้ยังทำงานเมื่อพยายามแยกไฟล์บีบอัดที่เก็บถาวร (เช่นtar xvkzf backup.tar.gz -C ~) ฉันไม่คิดว่ามันจะเป็นที่รู้จักเมื่อคุณพยายามสร้าง archvie ใหม่ ( tar czf foo.tar.gz foo/) ถ้าคุณถามถึงสิ่งนั้น
Lekensteyn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.