Cara mengecilkan file gambar setelah mengalokasikan ruang penuh

13

Saya sedang dalam proses bereksperimen dengan membuat cadangan kartu sd Raspberry Pi (Raspbian). Saya menggunakan Win32DiskImager untuk membaca gambar (dari pembaca kartu SD) ke HDD saya, berhasil - tetapi sekarang masalah ukuran. Gambar hanya lebih besar dari kartu SD asli dan hanya dapat ditulis kembali ke kartu SD yang lebih besar, yang, jika Anda mendukungnya memiliki masalah yang sama.

Setelah membuat file .img, bagaimana saya bisa menghapus semua ruang yang tidak digunakan lagi? (Apakah ini karena saya menggunakan raspi-config untuk mengalokasikan semua ruang yang tersedia ke root?)

Saya mencoba untuk mendapatkan gambaran seperti apa partisi tersebut dengan Cygwin, tetapi tidak dapat mengatur agar fdisk berfungsi (-bash: fdisk: perintah tidak ditemukan) - (setelah membaca Gambar kartu 16Gb berisi ruang yang tidak dipartisi di akhirnya: Memotong mungkin? )

Renier Delport
sumber

Jawaban:

12

Jadi cara terbaik yang saya temukan adalah menggunakan GParted (Anda dapat menggunakan OS berbasis Linux, atau boot dari USB Live GParted). Cukup sederhana untuk menemukan instruksi terperinci tentang bagaimana melakukan masing-masing langkah ini secara terperinci, tetapi di sini adalah metode umum yang saya temukan berhasil:

  1. Jalankan GParted, temukan kartu SD Anda di daftar perangkat dan perkecil partisi utama menjadi sekecil itu.
  2. Ambil nilai sektor terakhir dari partisi ini dan kalikan dengan ukuran sektor (512 untuk saya; saya anggap ini standar, meskipun Anda dapat memeriksa ini di pengaturan GParted untuk perangkat Anda): ini akan memberi Anda ukuran total dalam byte untuk menyalin.
  3. Bagilah jumlah total byte dengan 4096 (kumpulkan jika Anda perlu - lebih baik untuk mengambil ruang lebih banyak daripada tidak cukup), dan ini akan memberi Anda 'hitungan' untuk kemudian masuk ke perintah berikut di terminal di Linux di Linux lingkungan (Anda mungkin dapat melakukan ini dari terminal sistem operasi USB Live GParted atau di Cygwin tanpa sudo selama Anda menjalankannya sebagai administrator):

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

Ubah lokasi perangkat input jika perlu. Ini akan memberi Anda file gambar akhir yang terkecil yang bisa, menghilangkan ruang kosong.

Mike Roberts
sumber
Saya dapat memverifikasi bahwa ini berfungsi. Saya baru saja mencobanya beberapa menit yang lalu untuk beralih dari kartu 8GB ke kartu 4GB. Ini harus berfungsi asalkan data Anda lebih kecil dari kartu tujuan Anda.
PNDA
Sortir lupa tentang pos ini sejak saya pindah. Akan mencobanya di masa depan. Sepertinya ini adalah masalah umum, jadi terima kasih atas masukan Anda.
Renier Delport
Ini harus ditandai sebagai jawaban yang benar! Terima kasih!
rodripf
ada cara di Windows?
Flash Thunder
1
Anda dapat boot dari Live USB GParted.
Mike Roberts
7

Ada alat bagus yang disebut pishrink yang mengurangi ukuran gambar dd sebanyak mungkin dengan mengecilkan partisi root. Jika Anda memulai gambar yang dipulihkan, pertama kali partisi diperluas ke ukuran maksimum lagi. Jika Anda menjalankan Windows cukup gunakan Linux di Raspberry Anda untuk mengecilkan gambar.

Framp
sumber
0

Versi terbaru dari Win32DiskImager memiliki opsi Read Only Allocated Partitions. Itu menulis hanya menggunakan ruang, bukan kosong.

  1. Kecilkan partisi pada kartu sd dengan GParted.
  2. Buat gambar dengan Win32DiskImager dari kartu yang lebih besar.
  3. Tulis gambar dengan Win32DiskImager pada kartu yang lebih kecil menggunakan opsi yang disebutkan lebih tinggi.
Pavol Fejko
sumber
-1

Jawaban sederhananya adalah Anda tidak bisa. Jika Anda ingin mengecilkan kompresi menggunakan gambar, itulah yang paling banyak dilakukan (pada 'NIX gzip berfungsi dengan baik). Anda akan menemukan banyak diskusi tentang ini di situs ini.

Alternatifnya adalah hanya mencadangkan file. Pendekatan saya dijelaskan sebagai berikut. /raspberrypi//a/28087/8697

Milliways
sumber
1
Anda dapat (jika konten data lebih kecil dari kartu SD baru)
Wilf
2
Kompresi tidak akan membantu. Ini bukan masalah ruang disk tempat file IMG berada. Ini masalah ruang pada kartu SD di mana file IMG akan ditulis ke
Thomas Weller
@ Thomas Mengompresi file IMG akan membuatnya lebih kecil sehingga (mudah-mudahan) cocok dengan kartu SD yang ingin Anda tuliskan ... apakah saya kehilangan sesuatu?
user253751
@immibis: Anda dapat gzip file IMG sehingga menggunakan lebih sedikit ruang pada hard disk PC Anda. Jika Anda menulis data yang di-gzip ke kartu SD, itu tidak akan bisa boot. Data harus dalam format yang benar untuk boot dan itu bukan format gzip.
Thomas Weller
@ Thomas Oh, saya pikir OP ingin menyimpan cadangan mereka pada kartu SD lain untuk beberapa alasan, bukan mengembalikannya.
user253751