วิธีย่อไฟล์รูปภาพหลังจากจัดสรรพื้นที่เต็มแล้ว


13

ฉันกำลังทำการทดลองด้วยการสำรองการ์ด SD ของ Raspberry Pi (Raspbian) ฉันใช้ Win32DiskImager เพื่ออ่านภาพ (จากเครื่องอ่านการ์ด SD) ไปยัง HDD ของฉันสำเร็จ - แต่ตอนนี้ปัญหาเรื่องขนาด ภาพนั้นใหญ่กว่าการ์ด SD ดั้งเดิมและสามารถเขียนกลับไปยังการ์ด SD ที่ใหญ่กว่าได้ซึ่งหากคุณสำรองข้อมูลนั้นมีปัญหาเดียวกัน

หลังจากสร้างไฟล์. img ฉันจะลบพื้นที่ว่างที่ไม่ได้ใช้ทั้งหมดอีกครั้งได้อย่างไร (เป็นเพราะฉันใช้ raspi-config เพื่อจัดสรรพื้นที่ว่างทั้งหมดให้กับรูทหรือไม่)

ผมพยายามที่จะได้รับความคิดของสิ่งที่พาร์ทิชัน (s) มีลักษณะคล้ายกับ Cygwin แต่ไม่สามารถจัดการเพื่อให้ได้ fdisk ทำงาน (ทุบตี: fdisk: ไม่พบคำสั่ง) - (หลังจากที่ได้อ่านภาพของบัตร 16Gb มีพื้นที่ unpartitioned ที่ ท้าย: ตัดทอนไปได้หรือไม่ )

คำตอบ:


12

ดังนั้นวิธีที่ดีที่สุดที่ฉันพบคือใช้ GParted (คุณสามารถใช้ระบบปฏิบัติการบน Linux หรือบูตจาก GParted Live USB) มันง่ายพอที่จะหาคำแนะนำโดยละเอียดเกี่ยวกับวิธีการทำแต่ละขั้นตอนอย่างละเอียด แต่นี่เป็นวิธีทั่วไปที่ฉันได้พบ:

  1. เรียกใช้ GParted ค้นหาการ์ด SD ของคุณในรายการอุปกรณ์และลดขนาดพาร์ติชันหลักให้เล็กที่สุดเท่าที่จะทำได้
  2. นำค่าของเซ็กเตอร์สุดท้ายของพาร์ติชั่นนี้และคูณด้วยขนาดเซกเตอร์ (512 สำหรับฉันฉันถือว่านี่เป็นมาตรฐานแม้ว่าคุณสามารถตรวจสอบได้ในการตั้งค่า GParted สำหรับอุปกรณ์ของคุณ): นี่จะให้ขนาดโดยรวมเป็นไบต์ เพื่อคัดลอก
  3. แบ่งจำนวนไบต์ทั้งหมดด้วย 4096 (ปัดเศษขึ้นถ้าคุณต้องการ - ดีกว่าที่จะใช้พื้นที่มากเกินพอไม่พอ) และนี่จะให้ 'นับ' เพื่อป้อนคำสั่งต่อไปนี้ที่เทอร์มินัลใน Linux สภาพแวดล้อม (คุณสามารถทำได้จากเทอร์มินัลระบบปฏิบัติการ GParted Live USB หรือใน Cygwin โดยไม่ต้องใช้ sudo ตราบใดที่คุณใช้งานในฐานะผู้ดูแลระบบ):

sudo dd if=/dev/mmcblk0 of=/path/to/your/file.img bs=4k count=<count>

เปลี่ยนตำแหน่งอุปกรณ์อินพุตหากคุณต้องการ นี่ควรให้ไฟล์ภาพสุดท้ายที่มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้โดยเว้นที่ว่าง


ฉันสามารถตรวจสอบได้ว่ามันใช้งานได้ ฉันเพิ่งลองไม่กี่นาทีที่ผ่านมาเพื่อเปลี่ยนจากการ์ด 8GB เป็นการ์ด 4GB สิ่งนี้ควรใช้งานได้หากข้อมูลของคุณเล็กกว่าบัตรปลายทางของคุณ
PNDA

จัดเรียงออกลืมเกี่ยวกับโพสต์นี้ตั้งแต่ฉันย้ายไป จะลองในอนาคต ดูเหมือนว่านี่เป็นปัญหาทั่วไปดังนั้นขอขอบคุณสำหรับข้อมูลของคุณ
Renier Delport

ควรทำเครื่องหมายเป็นคำตอบที่ถูกต้อง! ขอบคุณ!
rodripf

ทางใดทางหนึ่งบน Windows?
Flash Thunder

1
คุณสามารถบูตได้จาก GParted Live USB
Mike Roberts

7

มีเครื่องมือที่ดีที่เรียกว่าpishrinkซึ่งลดขนาดของภาพ dd ให้มากที่สุดโดยลดขนาดพาร์ติชันรูท หากคุณเริ่มต้นอิมเมจที่กู้คืนในครั้งแรกที่พาร์ติชันถูกขยายเป็นขนาดสูงสุดอีกครั้ง หากคุณใช้ Windows เพียงใช้ Linux บน Raspberry ของคุณเพื่อย่อขนาดรูปภาพ


0

Win32DiskImager รุ่นใหม่ล่าสุดมีตัวเลือกพาร์ติชันที่จัดสรรแบบอ่านอย่างเดียว มันเขียนเฉพาะพื้นที่ที่ใช้ไม่ว่างเปล่า

  1. ลดขนาดพาร์ติชันบนการ์ด sd ด้วย GParted
  2. สร้างภาพด้วย Win32DiskImager จากการ์ดที่ใหญ่กว่า
  3. เขียนภาพด้วย Win32DiskImager บนการ์ดขนาดเล็กโดยใช้ตัวเลือกกล่าวถึงที่สูงขึ้น

-1

คำตอบง่ายๆคือคุณทำไม่ได้ หากคุณต้องการลดขนาดการบีบอัดภาพให้ใช้ซึ่งเป็นสิ่งที่ส่วนใหญ่ทำ (บน 'NIX gzip ทำงานได้ดี) คุณจะพบกับการสนทนามากมายในเว็บไซต์นี้

ทางเลือกคือสำรองไฟล์เท่านั้น แนวทางของฉันอธิบายไว้ดังต่อไปนี้ /raspberrypi//a/28087/8697


1
คุณสามารถ (ถ้าเนื้อหาข้อมูลที่มีขนาดเล็กกว่า SD การ์ดใหม่)
วิลฟ์

2
การบีบอัดจะไม่ช่วย ไม่ใช่เรื่องของพื้นที่ดิสก์ที่มีไฟล์ IMG อยู่ มันเป็นเรื่องของพื้นที่บนการ์ด SD ที่ไฟล์ IMG จะถูกเขียนไป
โทมัสเวลเลอร์

@Thomas การบีบอัดไฟล์ IMG จะทำให้ไฟล์เล็กลงดังนั้น (หวังว่า) จะพอดีกับการ์ด SD ที่คุณต้องการเขียนลงใน .... ฉันจะทำอะไรหายหรือเปล่า?
user253751

@immibis: คุณสามารถ gzip ไฟล์ IMG เพื่อใช้พื้นที่บนฮาร์ดดิสก์ของพีซีของคุณน้อยลง หากคุณเขียนข้อมูล gzipped ไปยังการ์ด SD มันจะไม่บูต ข้อมูลต้องอยู่ในรูปแบบที่ถูกต้องเพื่อที่จะบูตและไม่ใช่รูปแบบ gzip
Thomas Weller

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