Saya ingin menyalin seluruh hierarki sistem file dari satu drive ke drive lain..yaitu isi dari setiap direktori serta file biasa di platform Linux. Akan berterima kasih untuk mengetahui cara terbaik untuk melakukan itu dengan kemungkinan Linux built-in functions. Sistem file adalah keluarga besar.
linux
filesystems
Penyulap
sumber
sumber
dd
?dd if=/dev/sda1 of=/dev/sdb1 bs=4096
conv=notrunc,noerror,sync
.dd
2 alasan: pertama adalah ide yang buruk untuk melakukan copy blok-tingkat dari sistem file yang di-mount (yang merupakan kasus untuk/
) dan keduadd
tidak akan menyalin data dari sumber-sumber yang dipasang dalam sistem file seperti/boot
dan/home
.Jawaban:
Saya sering menggunakan
Presuming / mnt adalah disk baru yang dipasang di / mnt dan tidak ada mount lain di /.
-x menyimpannya di satu sistem file.
Ini tentu saja perlu dilakukan sebagai root atau menggunakan sudo.
Tautan ini memiliki beberapa alternatif, termasuk yang di atas
http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html
sumber
/
, tidak termasuk/dev
, yaitu/sys
,/proc
dll. Oleh karena itu sebelum mengeluarkan yangcp
saya sarankan mencari pendekatan yang lebih baik (juga menggunakan rsync)-x
flag berarti sistem file sintetis yang Anda sebutkan tidak akan disalin.Yang Anda inginkan adalah rsync .
Perintah ini dapat digunakan untuk menyinkronkan folder, dan juga melanjutkan menyalin ketika dibatalkan setengah jalan. Perintah untuk menyalin satu disk adalah:
Opsinya adalah:
Untuk meningkatkan kecepatan penyalinan, tambahkan
-W
(--whole-file
), untuk menghindari penghitungan delta / diff file. Ini adalah default ketika sumber dan tujuan ditetapkan sebagai jalur lokal, karena manfaat nyata dari algoritma delta-transfer rsync adalah mengurangi penggunaan jaringan.Pertimbangkan juga
--numeric-ids
untuk menambahkan agar tidak memetakan nilai uid / gid berdasarkan nama pengguna / grup.sumber
rsync -avxHAWX --numeric-ids --progress / mnt/
tetapi saya harus melakukannyarsync -avxHAWX --numeric-ids --progress / mnt/ > ~/rsync.out
. Saya curiga menuangkan output ke terminal memperlambat proses. : D--info=progress2
alih-alih--progress
berguna untuk transfer besar, karena memberikan kemajuan keseluruhan, alih-alih (jutaan baris untuk) file individual.X
danA
denganE
, karena atribut yang diperluas dan ACL dicakup olehE
pada mac saya. Diuji:rsync version 2.6.9 protocol version 29
> ~/rsync.out
,2> ~/rsync.err
akan menyimpan kesalahan dalam file terpisah./
, perhatikan bahwa memiliki garis miring (atau tidak) pada direktori source membuat perbedaan:rsync source/ dest/
salinan segala sesuatu di dalamsource/
untukdest/
, sementararsync source dest/
salinan foldersource
dan segala sesuatu di dalam ke dalamdest/
.Jawaban Michael Aaron Safyan tidak memperhitungkan file yang jarang.
-S
opsi memperbaikinya.Varian ini juga tidak mengirim spam dengan setiap file yang berkembang dan tidak melakukan sinkronisasi delta yang membunuh kinerja dalam kasus-kasus non-jaringan.
Sempurna untuk menyalin sistem file dari satu drive lokal ke drive lokal lain.
sumber
55,431,669,792 57% 97.47MB/s 0:06:56 xfr#2888, ir-chk=5593/8534)
Untuk satu salinan salinan lokal dari satu drive ke drive lain, saya kira cp cukup seperti yang dijelaskan oleh Wolfmann di atas.
Untuk karya yang lebih besar seperti cadangan lokal atau jarak jauh misalnya, yang terbaik adalah rsync .
Tentu saja, rsync secara signifikan lebih kompleks untuk digunakan.
Mengapa rsync:
ini memungkinkan Anda untuk menyalin (salinan tersinkronisasi) semua atau sebagian dari drive A Anda ke drive B, dengan banyak opsi, seperti mengecualikan beberapa direktori dari salinan (misalnya tidak termasuk / proc).
Keuntungan besar lainnya adalah alat asli ini memantau transfer file: mis. Untuk transfer besar-besaran, jika koneksi terputus, itu akan berlanjut dari breakpoint.
Dan last but not least, rsync menggunakan koneksi ssh, jadi ini memungkinkan Anda untuk mencapai "salinan" yang disinkronkan dengan remote. Lihat halaman manual dan juga di sini untuk beberapa contoh .
sumber
Seperti yang disarankan Michael Safyan di atas, saya telah menggunakan
rsync
untuk tujuan ini. Saya sarankan menggunakan beberapa opsi tambahan untuk mengecualikan direktori yang Anda mungkin tidak ingin menyalin.Versi ini cukup spesifik untuk sistem berbasis Gnome dan Debian / Ubuntu, karena mencakup subdirektori dari direktori home pengguna yang khusus untuk Gnome, serta cache paket APT.
Baris terakhir akan mengecualikan direktori apa pun bernama cache / Cache / .cache, yang mungkin terlalu agresif untuk beberapa penggunaan:
sumber
Menambahkan dua bit yang berguna ke thread re rsync: mengubah cypher, dan menggunakan
--update
:Sesuai pos Wolfman,
cp -ax
elegan, dan keren untuk barang-barang lokal.Namun,
rsync
mengagumkan juga. Lebih jauh ke jawaban Michael-W
, mengubah kode sandi juga dapat mempercepat (baca juga implikasi keamanannya).Ada beberapa diskusi (dan tolok ukur) di sekitar tempat tentang CPU yang lambat menjadi hambatan yang sebenarnya, tetapi tampaknya membantu saya ketika mesin dimuat melakukan hal-hal bersamaan lainnya.
Salah satu alasan besar lainnya untuk menggunakan rsync dalam salinan rekursif yang besar seperti ini adalah karena saklar -u (atau --update ). Jika ada masalah selama penyalinan, Anda dapat memperbaikinya, dan rsync akan mengambil di mana ia tinggalkan (saya tidak berpikir scp memiliki ini). Melakukannya secara lokal, cp juga memiliki saklar -u.
(Saya tidak yakin apa implikasi dari --update dan --whole-file bersama, tetapi tampaknya selalu bekerja dengan baik untuk saya dalam jenis tugas ini)
Saya menyadari ini bukan utas tentang fitur rsync, tetapi beberapa yang paling umum saya gunakan untuk ini adalah:
Kebetulan, jika saya harus menggunakan windows, saya menggunakan rsync dari cygwin untuk membuat salinan rekursif yang besar, karena penjelajah yang sedikit mati otak ingin memulai dari awal (walaupun saya menemukan Finder adalah OS X lebih buruk)
sumber
rsync
Dari:
https://wiki.archlinux.org/index.php/Full_system_backup_with_rsync
Halaman Pria Di Sini
sumber
Seperti disebutkan dalam komentar oleh juniorRubyist, pendekatan yang lebih disukai di sini adalah menggunakan
dd
. Alasan utamanya adalah kinerja, ini adalah salinan blok demi blok alih-alih file-demi-file.Mengkloning partisi
Mengkloning seluruh disk
Referensi
sumber
dd
adalah ide yang sangat buruk karena 2 alasan: pertama melakukan copy blok-tingkat dari sistem file yang dipasang (yang merupakan kasus untuk/
) akan lebih dari mungkin menghasilkan kesalahan sistem file target, dan keduadd
tidak akan menyalin data dari sumber yang dipasang di dalam sistem file suka/boot
dan/home
. Tautan Anda valid untuk kloning disk, bukan kloning "hierarki file"'dd' luar biasa, tapi ddrescue (apt install gddrescue) bahkan lebih baik. Jika dd terganggu, tidak ada cara untuk me-restart (alasan bagus lain untuk menggunakan rsync). Saat Anda menggunakan ddrescue dengan logfile, ia melacak blok mana yang telah disalin.
Saat mencadangkan sistem dual boot Windows / Linux, saya menggunakan ntfsclone untuk partisi Windows dan ddrescue untuk partisi Linux dan dd untuk MBR. (Saya belum mencoba mencadangkan sistem dual boot menggunakan GPT / UEFI.)
Yang ingin saya lihat adalah alat ddrescue yang dapat membuat file seperti ntfsclone di mana ruang yang tidak terisi ditandai dengan karakter kontrol. Hal ini membuat gambar tidak dapat dipasang secara langsung, tetapi memungkinkannya hanya sebesar data yang ada.
Seseorang tolong buat "format gambar khusus" ntfsclone untuk ddrescue ...
sumber
rsync
adalah solusi sempurna seperti yang dijelaskan di atas.Saya hanya akan menambahkan
-S
" menangani file-file yang jarang secara efisien " jika seandainya ada volume docker devicemapper atau yang serupa untuk disalin.sumber
Saya mencoba perintah rsync yang diusulkan di sini tetapi akhirnya saya mendapat hasil yang lebih bersih dan lebih cepat
partclone
. Lepas partisi sumber dan target lalu jalankan yang berikut:Ini melakukan langkah-langkah berikut:
Di atas berfungsi jika partisi target adalah ukuran yang sama atau lebih besar dari sumbernya. Jika target Anda lebih kecil dari sumbernya (tetapi cocok untuk semua data) maka lakukan hal berikut:
resize2fs -M
menyusut sistem file ke ukuran minimum sebelum mengkloning data.Catatan yang
partclone
tidak diinstal secara default pada sebagian besar sistem. Gunakan distro langsung seperti clonezilla atau instal partclone dari manajer paket distro Anda (apt-get install partclone
pada sistem berbasis debian).sumber