Untuk transfer sederhana / home ke disk lain saya menggunakan cp -a
yang menurut saya cara yang sangat lambat. Seharusnya tahu cara yang lebih efisien untuk menyelesaikan tugas. Saya memiliki / home mount sebagai volume logis, tetapi disk target bukan sistem LVM
9
cp
lambat, metode lain juga akan lambat. Kecuali jika itu bukan penyalinan berorientasi filenoatime
opsi mount untuk mengurangi penulisan yang tidak perlu, khususnya ke sistem file sumber.Jawaban:
Coba
tar
,pax
,cpio
, dengan sesuatu buffering.Saya menyarankan
bsdtar
alih-alihtar
karena setidaknya pada beberapa distribusi Linuxtar
adalah GNU tar yang bertentangan denganbsdtar
(darilibarchive
) tidak menangani pelestarian atribut yang diperluas atau ACL atau atribut linux.pv
akan buffer hingga 500 juta data sehingga dapat mengakomodasi fluktuasi kecepatan baca dan tulis pada kedua sistem file dengan lebih baik (meskipun dalam kenyataannya, Anda mungkin akan memiliki disk yang lebih lambat sehingga yang lain dan mekanisme penulisan kembali OS akan melakukan buffering sebagai baik jadi itu mungkin tidak akan membuat banyak perbedaan). Versi lama yangpv
tidak mendukung-a
(untuk pelaporan kecepatan rata-rata), Anda dapat menggunakannyapv -B 200M
sendirian di sana.Bagaimanapun, mereka tidak akan memiliki batasan
cp
, yang membaca dan menulis secara berurutan. Di sini kita punya dua yangtar
bekerja bersamaan, sehingga yang satu dapat membaca satu FS sementara yang lain sibuk menunggu FS yang lain selesai menulis.Untuk ext4 dan jika Anda menyalin ke partisi yang setidaknya sama besar dengan sumbernya, lihat juga
clone2fs
yang berfungsintfsclone
, yaitu menyalin blok yang dialokasikan saja dan secara berurutan, jadi pada penyimpanan rotasi mungkin akan menjadi yang paling efisien.partclone menggeneralisasikan itu ke beberapa sistem file yang berbeda.
Sekarang beberapa hal yang perlu dipertimbangkan ketika kloning sistem file.
Kloning akan menyalin semua direktori, file dan isinya ... dan yang lainnya. Sekarang segalanya berbeda dari sistem file ke sistem file. Bahkan jika kita hanya mempertimbangkan fitur umum dari sistem file Unix tradisional, kita harus mempertimbangkan:
Kemudian jika Anda mempertimbangkan
ext4
dan sebagian besar sistem file Linux, Anda harus mempertimbangkan:SELinux
)Tidak semua alat mendukung semua itu, atau ketika mereka melakukannya, Anda harus mengaktifkannya secara eksplisit seperti
--sparse
,--acls
... opsirsync
,tar
... Dan ketika menyalin ke sistem file yang berbeda, Anda harus mempertimbangkan kasus di mana mereka tidak mendukung set fitur yang sama.Anda mungkin juga harus mempertimbangkan atribut sistem file itu sendiri seperti UUID, ruang yang disediakan untuk root, frekuensi fsck, perilaku penjurnalan, format direktori ...
Lalu ada sistem file yang lebih kompleks, di mana Anda tidak dapat benar-benar menyalin data dengan menyalin file. Pertimbangkan misalnya
zfs
ataubtrfs
ketika Anda dapat mengambil snapshot dari subvolume dan cabut mereka ... Mereka akan memiliki alat khusus mereka sendiri untuk menyalin data.Salinan byte ke byte perangkat blok (atau setidaknya blok yang dialokasikan bila memungkinkan) sering kali paling aman jika Anda ingin memastikan bahwa Anda menyalin semuanya. Namun waspadalah terhadap masalah bentrokan UUID, dan itu menyiratkan Anda menyalin ke sesuatu yang lebih besar (meskipun Anda dapat mengubah ukuran salinan snapshot dari sumber sebelum menyalin).
sumber
--acls
opsi, untuk menyimpan ACL ke dalam arsip. Dan saya akan terkejut jika alat alien (sejenisnya)bsdtar
menanganinya lebih baik daripada yang asli (pada dasarnya) ...tar
untuk Linux (star
,bsdtar
,tar
), saya tidak menyadari bahwa GNU tar adalah lebih baik daripada yang lain. Pilihan untuk alat GNU umumnya lebih politis daripada teknis (lihat misalnyabash
).--acls
Saya merekomendasikan rsync, misalnya:
Atau, untuk mentransfer dengan kompresi:
sumber
rsync
umumnya jauh lebih lambat daripadacp
atautar|tar
rsync
sebagian besar efisien adalah Anda sudah memiliki sebagian sumber data tersedia pada volume tujuan karena hanya akan mentransfer data yang hilang / diubah. Saya tidak akan menggunakannya untuk "salinan pertama" yang cepat.