Latar Belakang
Saya menyalin beberapa data CD / DVD ke file ISO untuk menggunakannya nanti tanpa perlu di drive.
Saya mencari di Internet untuk prosedur dan saya menemukan banyak:
Penggunaan
cat
untuk menyalin media: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.htmlcat /dev/sr0 > image.iso
Penggunaan
dd
untuk melakukannya (tampaknya yang paling banyak digunakan): http://www.linuxjournal.com/content/archiving-cds-iso-commandlinedd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
Gunakan hanya
pv
untuk mencapai ini: Lihatman pv
untuk informasi lebih lanjut, meskipun di sini adalah kutipannya:Taking an image of a disk, skipping errors: pv -EE /dev/sda > disk-image.img Writing an image back to a disk: pv disk-image.img > /dev/sda Zeroing a disk: pv < /dev/zero > /dev/sda
Saya tidak tahu apakah mereka semua harus setara, meskipun saya diuji beberapa dari mereka (menggunakan md5sum
alat) dan, setidaknya, dd
dan pv
yang tidak setara. Berikut adalah md5sum
kedua drive dan file yang dihasilkan menggunakan setiap prosedur:
md5 dari prosedur dd: 71b676875b0194495060b38f35237c3c
md5 dari prosedur pv: f3524d81fdeeef962b01e1d86e6acc04
EDIT: Output itu dari CD lain dari output yang diberikan. Bahkan, saya menyadari ada beberapa fakta menarik yang saya berikan sebagai jawaban.
Bahkan, ukuran masing-masing file berbeda dibandingkan satu sama lain.
Jadi, apakah ada prosedur terbaik untuk menyalin CD / DVD atau saya hanya menggunakan perintah yang salah?
Informasi lebih lanjut tentang situasi ini
Berikut adalah informasi lebih lanjut tentang test case yang saya gunakan untuk memeriksa prosedur yang saya temukan sejauh ini:
isoinfo -d i /dev/sr0
Keluaran: https://gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
dd
untuk menyalin media, dengan checksum keluaran dan informasi file Keluaran: https://gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256-19-aug-2015
pv
untuk menyalin media, dengan checksum keluaran dan informasi file Keluaran: https://gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256-19-aug-2015
Bantuan apa pun akan dihargai!
cmp file1 file2
? apakah Anda menggunakandd
dengan yang salahcount=
(atau benar-benar ada hitungan sama sekali yang tidak perlu jika Anda menginginkan semuanya?). Baca kesalahan dalam dmesg?dd
perintah persis yang Anda gunakan (apa ukuran blok? Apa yang dihitung?), (2) ukuran dan checksum dari semua output, dan (3) informasi independen apa pun yang Anda miliki mengenai jumlah data pada disk optik sumber. ... ... ... ... ... ... PS Mengapa Anda menggunakancount=
padadd
? Anda ingin menyalin seluruh gambar disk, bukan?count=
mengatakan "salin sebanyak ini lalu berhenti".isoinfo -d -i /dev/cdrom
untuk mengetahui nomor hitungan dan menggunakannya - pada kenyataannya, ia mengatakan seseorang tidak boleh menggunakan hanyadd
. "Bagaimanapun juga, jika Anda menginginkan image ISO yang tepat dari CD itu, Anda perlu memperbaiki ukuran blocksize dan blockcount sebelum Anda membuat gambar Anda."Jawaban:
Semua perintah berikut ini setara. Mereka membaca byte CD
/dev/sr0
dan menulisnya ke file bernamaimage.iso
.Mengapa Anda menggunakan salah satunya?
Kesederhanaan. Misalnya, jika Anda sudah tahu
cat
ataucp
, Anda tidak perlu mempelajari perintah lain lagi.Kekokohan. Yang ini sedikit varian kesederhanaan. Berapa banyak risiko yang ada sehingga mengubah perintah akan mengubah apa yang dilakukannya? Mari kita lihat beberapa contoh:
set -o noclobber
harus memastikan bahwa Anda tidak menimpa apa pun; namun Anda mungkin menimpa perangkat jika Anda tidak sengaja menulis>/dev/sda
(untuk CD, yang hanya baca, tidak ada risiko, tentu saja). Ini mendukungcat /dev/sr0 >image.iso
(sulit untuk salah dengan cara yang merusak) atas alternatif sepertitee </dev/sr0 >image.iso
(jika Anda membalikkan pengalihan atau melupakan input,tee
akan menulis ke/dev/sr0
).cat
: Anda mungkin secara tidak sengaja menggabungkan dua file. Itu membuat data mudah diselamatkan.dd
:i
dano
dekat pada keyboard, dan agak tidak biasa. Tidak ada padanannyanoclobber
,of=
dengan senang hati akan menimpa apa pun. Sintaks redirection kurang rentan kesalahan.cp
: jika Anda secara tidak sengaja menukar sumber dan target, perangkat akan ditimpa (sekali lagi, dengan asumsi perangkat non-read-only). Jikacp
dipanggil dengan beberapa opsi seperti-R
atau-a
yang beberapa orang tambahkan melalui alias, itu akan menyalin node perangkat daripada konten perangkat.Fungsionalitas tambahan. Satu-satunya alat di sini yang memiliki fungsionalitas tambahan yang bermanfaat adalah
pv
, dengan opsi pelaporan yang kuat.Tetapi di sini Anda dapat memeriksa berapa banyak yang telah disalin dengan melihat ukuran file output.
Performa. Ini adalah proses yang terikat I / O; pengaruh utama dalam kinerja adalah ukuran buffer: alat membaca sepotong dari sumber, menulis potongan ke tujuan, berulang. Jika bongkahan terlalu kecil, komputer menghabiskan waktunya untuk beralih di antara tugas. Jika chunk terlalu besar, operasi baca dan tulis tidak dapat diparalelkan. Ukuran potongan optimal pada PC biasanya sekitar beberapa megabyte tetapi ini jelas sangat tergantung pada OS, pada perangkat keras, dan pada apa lagi yang dilakukan komputer. Saya membuat tolok ukur untuk hard disk ke salinan hard disk beberapa waktu yang lalu, di Linux, yang menunjukkan bahwa untuk salinan dalam disk yang sama,
dd
dengan ukuran buffer yang besar memiliki keunggulan, tetapi untuk salinan cross-disk,cat
memenangkan semuadd
ukuran buffer.Ada beberapa alasan mengapa Anda
dd
sering disebutkan. Terlepas dari kinerja, mereka bukan alasan yang sangat bagus.cat
(itu dengan line-berorientasi alat yang lebih sepertihead
,sed
, dll), tetapi orang-orang cenderung menghindari pada data biner karena hubungannya dengan pengolahan teks. Ini bukan masalah pada sistem modern seperti Linux, OSX, * BSD, atau apa pun yang sesuai dengan POSIX.dd
agak "lebih rendah" daripada alat lain seperticat
dan mengakses perangkat secara langsung. Ini sepenuhnya salah:dd
dancat
dantee
yang lainnya membaca byte dari input mereka dan menulis byte ke output mereka. Sihir yang sebenarnya ada di/dev/sr0
.dd
memiliki sintaks baris perintah yang tidak biasa, jadi menjelaskan cara kerjanya memberi lebih banyak peluang untuk bersinar dengan menjelaskan sesuatu yang hanya dituliscat /dev/sr0
.dd
dengan ukuran buffer yang besar dapat memiliki kinerja yang lebih baik, tetapi tidak selalu demikian (lihat beberapa tolok ukur di Linux ).Risiko utama
dd
adalah ia dapat melewatkan beberapa data secara diam-diam . Saya pikirdd
aman selamaskip
ataucount
tidak dilewati tetapi saya tidak yakin apakah ini yang terjadi pada semua platform. Tetapi tidak memiliki keuntungan kecuali untuk kinerja.Jadi gunakan saja
pv
jika Anda ingin laporan kemajuannya yang mewah, ataucat
jika tidak.sumber
pv < /dev/sr0 > image.iso
sama denganpv /dev/sr0 > image.iso
(yang terakhir ditemukan di halaman manual pv)?pv /dev/sr0 …
dapat memasukkan nama file dalam laporan kemajuan sedangkanpv </dev/sr0
tidak bisa.cp
mungkin aliascp -R
, yang (setidaknya pada GNU cp, sebagai root) menyebabkancp
untuk menyalin node perangkat daripada kontennya./dev
adalah node perangkat. Misalnyacp -R /dev/sr0 image.iso
akan membuatimage.iso
file melalui mana drive CD diakses, sama seperti/dev/sr0
, bukan file biasa yang berisi salinan konten CD yang Anda dapatkancp /dev/sr0 image.iso
.dd
beat case terbaikcat
tetapi hanya dengan selisih sedikit.Ada fakta menarik dalam kasus ini, khususnya yang ini:
dd
danpv
) checksum identik .dd
prosedur, membuka drive dan menutupnya dengan disk yang sama, dan kemudian menyelesaikan tes denganpv
prosedur tersebut. Melakukan hal itu, saya mendapatkan salinan identik dengan kedua prosedur.dd
w / ocount=X
parameter berhenti benar pada akhir disk dan memberikan yang sama disc-gambar sepertipv
(checksum adalah identik), jadi lebih baik bagi saya untuk menggunakandd
w / o parameter atau hanyapv
.Jadi, untuk saat ini, tampaknya
pv
dandd
dapat menyalin CD / DVD dengan hasil yang sama.sumber