Bagaimana cara memindahkan Linux ke partisi lain?

9

Saya perlu membuat salinan dari sistem linux yang berfungsi, yang (karena terdapat di /, dan tempat baru disiapkan di / mnt / sdb5) tampaknya berisi banyak sekali tautan keras, lunak, dan file khusus di / dev; akan cpiomenangani pekerjaan ini tanpa menerapkan sihir tambahan?

Perlindungan yang saat ini dikenal:

  • tidak akan menghapus / memodifikasi sistem yang sedang berjalan sampai salinan dianggap dapat di-boot dan bekerja dengan root=/dev/sdb5; sebelum menghapus, ambil cadangan partisi penuh.
  • akan menggunakan cpio untuk mengarsipkan setiap direktori root secara terpisah, sehingga akan membukanya dari lingkungan LiveCD sehingga partisi donor tidak akan dirugikan

Tapi tetap saja, tidak akan kehilangan waktu hanya karena cpio melewatkan beberapa flag dan melumpuhkan izin / tipe simpul / lunak atau hardlink.

Alat mana yang digunakan / batuan bawah laut mana yang harus dihindari?

kagali-san
sumber
@warren, terima kasih. akan melakukan tes cpio-vs-tar lainnya sekarang;)
kagali-san
jangan khawatir: harap ini membantu :)
warren

Jawaban:

10

Untuk menjawab pertanyaan aktual mengenai cpio: Ini adalah bendera yang akan saya gunakan untuk cpio:

find / -xdev -depth \! -path ./lost+found -print0 | cpio --pass-through --null --dot --make-directories --unconditional --preserve-modification-time --sparse /mnt/sdb5

Tentu saja, karena Anda tidak menyalin melalui jaringan, saya hanya akan menggunakan cp:

cp --archive --sparse=always --verbose --one-file-system --target-directory=/mnt/sdb5 /

Dan jika Anda ingin dapat melakukan penyalinan beberapa kali, rsyncmerupakan pilihan yang lebih baik untuk kemampuan melanjutkannya. (Ini juga, seperti cp, menangani ACL dan atribut yang diperluas dan secara opsional dapat bekerja melalui jaringan seperti cpio. Jadi itu adalah opsi yang paling berguna, kecuali untuk melakukan salinan pertama secara lokal, yang saya lebih suka lakukan menggunakan cp.)

rsync --archive --inplace --hard-links --acls --xattrs --devices --specials --one-file-system --8-bit-output --human-readable --progress / /mnt/sdb5

Jangan Lupa menyalin /bootdan /dev!

/bootitu mudah, cukup salin saja. Tetapi /devjauh lebih rumit saat ini karena disembunyikan oleh udev. Saya merekomendasikan prosedur berikut:

  1. mkdir /tmp/dev
  2. mount --move /dev /tmp/dev
  3. Salin /devuntuk /mnt/sdb5menggunakan salah satu dari perintah di atas
  4. mount --move /tmp/dev /dev
  5. rmdir /tmp/dev
Teddy
sumber
6

Seperti @Klox sebutkan, ketika menyalin partisi dengan ukuran yang sama saya setuju untuk menggunakan dd.

Tetapi ketika Anda ingin menyalin disk ke partisi yang berbeda dengan ukuran yang berbeda, saya lebih suka menggunakannya rsync. Pasang partisi baru (katakanlah, / mnt / baru) dan:

# rsync -a --exclude=/proc --exclude=/dev --exclude=/sys / /mnt/new

Tidak ada sihir tambahan untuk symlink dan tidak perlu live cd (pengguna tunggal / init 1 akan baik-baik saja).

Torian
sumber
Ahh ya Saya menggunakan rsyncsemua waktu dan melewatkan yang jelas. Saya suka ddkarena alasan yang saya nyatakan, tetapi rsynclebih cocok untuk kebutuhan OP.
Klox
3

Varian yang lebih optimal ddadalah menggunakan partimage, itu hanya akan menyalin bagian yang digunakan dari partisi membuat menyalin partisi yang tidak digunakan besar lebih bijaksana.

Perhatikan peringatan penting:

Partimage TIDAK mendukung Ext4 yang merupakan default pada instalasi Ubuntu baru.

Salinan praktis disertakan pada distribusi CD Penyelamatan Sistem .

Steve-o
sumber
2

Saat memindahkan instalasi Linux di antara hard drive, saya selalu boot dari Live CD dan menggunakannya dduntuk menyalin seluruh partisi. Saya menyadari bahwa ini tidak berurusan dengan perubahan dalam ukuran disk (mau tidak mau disk baru lebih besar, yang menyederhanakan hal-hal), tapi saya suka teknik untuk alasan yang Anda khawatirkan tentang menggunakan cpio: sesuatu mungkin salah. Menggunakan ddteknik ini, semuanya atau tidak sama sekali: baik disk baru boot dan semuanya sama, atau disk tidak bisa boot. Tidak ada risiko mengintai masalah yang muncul nanti.

Sekarang, tentu saja, ada masalah partisi yang tidak mengisi disk baru, tetapi saya lebih suka membuat partisi baru untuk mengisi ruang tambahan dan mengandalkan symlink untuk memindahkan direktori. (Saya yakin ada alat untuk mengubah ukuran partisi juga, tapi saya belum menggunakannya.)

Klox
sumber
Sistem yang saya bicarakan memiliki hanya sekitar 50 pertunjukan gratis di partisi 500 gb XFS (yang tidak dapat disusutkan, saat ini hanya tumbuh didukung melalui xfs_grow), dan partisi root juga XFS; lebih buruk lagi, ini adalah Gentoo mapan yang hampir setinggi itu sendiri. Lebih buruk lagi, langkah itu harus dilakukan tanpa menambahkan lebih banyak penyimpanan dan saat ini tidak dapat membuat cadangan lebih dari 60 pertunjukan - jadi tidak ada operasi partisi. Perlu memasukkan Win 'ke mesin itu untuk menguji beberapa hal.
kagali-san
juga, dd bagus, tetapi untuk operasi drive / partisi saya cenderung menggunakan lebih banyak .. solusi berpemilik. Acronis TrueImage tampaknya berfungsi lebih baik (kompresi, berbagi samba - dari livecd / liveusb flash).
kagali-san