Bagaimana arahan dd berfungsi di linux dengan contoh
- 2974
- 763
- Dave Kreiger V
DD adalah utiliti yang sangat kuat dan berguna yang terdapat pada sistem operasi Unix dan Unix seperti. Seperti yang dinyatakan dalam manualnya, tujuannya adalah untuk menukar dan menyalin fail. Pada sistem operasi Unix dan Unix seperti Linux, hampir semuanya dianggap sebagai fail, walaupun menghalang peranti: ini menjadikan DD berguna, antara perkara lain, untuk mengklon cakera atau lap data. The DD
Utiliti boleh didapati di luar kotak walaupun dalam pemasangan yang paling minimum dari semua pengagihan. Dalam tutorial ini, kita akan melihat cara menggunakannya dan bagaimana kita dapat mengubah tingkah lakunya dengan menggunakan beberapa pilihan yang paling biasa digunakan untuk menjadikan pekerjaan pentadbiran sistem linux anda lebih mudah.
Dalam tutorial ini anda akan belajar:
- Cara Menggunakan DD
- Cara mengubah suai tingkah laku program dengan menggunakan beberapa pilihan yang paling biasa digunakan
Keperluan perisian dan konvensyen yang digunakan
Kategori | Keperluan, konvensyen atau versi perisian yang digunakan |
---|---|
Sistem | Pengedaran-bebas |
Perisian | Tiada perisian khas diperlukan untuk mengikuti tutorial ini kecuali DD |
Yang lain | Kebiasaan dengan antara muka dan pengalihan baris arahan |
Konvensyen | # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah$ - Memerlukan arahan Linux yang diberikan sebagai pengguna yang tidak layak |
Penggunaan asas
Sintaks asas DD
sangat mudah. Secara lalai program dibaca dari input standard
dan menulis kepada output standard
. Walau bagaimanapun, kita boleh menentukan alternatif input
dan pengeluaran
fail dengan menggunakan masing -masing jika
dan dari
Pilihan baris arahan. Di sini DD berbeza dari sebahagian besar arahan shell, kerana tidak menggunakan standard --pilihan
atau -o
sintaks untuk pilihan.
Mari lihat contoh penggunaan DD. Salah satu kes penggunaan yang paling tipikal untuk utiliti adalah sandaran rekod boot induk: sektor pertama pada warisan Mbr
sistem partition. Panjang sektor ini biasanya 512
bait: ia mengandungi tahap 1 grub bootloader
dan jadual partisi cakera. Katakan kami mahu membuat sandaran Mbr
cakera /dev /sda, yang perlu kita lakukan ialah menggunakan DD dengan sintaks berikut:
$ sudo dd if =/dev/sda bs = 512 count = 1 of = mbr.img
Mari analisis arahan di atas. Pertama sekali kita mengutamakan penyerahan DD sebenar dengan arahan sudo, untuk menjalankan perintah dengan keistimewaan pentadbiran. Ini diperlukan untuk mengakses /dev/sda
Blok peranti. Kami kemudian memohon DD menyatakan sumber input dengan jika
pilihan dan fail output dengan dari
. Kami juga menggunakan BS
dan hitung
pilihan untuk menentukan masing -masing jumlah data yang harus dibaca pada satu masa, atau saiz blok, dan jumlah blok untuk dibaca. Dalam kes ini kita boleh meninggalkan BS
pilihan, sejak 512
bait adalah saiz lalai yang digunakan oleh DD. Jika kita menjalankan arahan di atas, kita akan melihat bahawa ia menghasilkan output berikut:
1+0 rekod dalam 1+0 rekod keluar 512 bait disalin, 0.000657177 s, 779 kb/s
Output di atas menunjukkan kepada kami jumlah rekod yang dibaca dan ditulis, jumlah data yang disalin, jumlah masa di mana tugas itu selesai dan kelajuan pemindahan. Sekarang kita harus mempunyai klon Mbr
sektor, disimpan di mbr.img
fail. Jelas sekali akhiran fail tidak mempunyai makna sebenar pada Linux, jadi penggunaan ".IMG "Satu benar -benar sewenang -wenang: anda mungkin mahu menggunakan".DD "untuk membiarkan nama fail mencerminkan arahan yang digunakan untuk membuat fail.
Dalam contoh di atas kita menggunakan BS
pilihan untuk menentukan kedua -dua jumlah bait yang harus dibaca dan ditulis pada satu masa. Untuk menentukan nilai berasingan untuk kedua -dua operasi, kita boleh menggunakan IBS
dan obs
Pilihan sebaliknya, yang ditetapkan, masing -masing, jumlah bait yang dibaca dan ditulis pada satu masa.
Melangkau blok semasa membaca dan menulis
Terdapat kes -kes di dalam kita mungkin mahu melangkau sejumlah saiz blok semasa membaca atau menulis ke fail. Dalam kes sedemikian kita harus menggunakan Langkau
dan mencari
Pilihan, masing -masing: mereka digunakan untuk melangkau blok data yang ditentukan, pada permulaan input dan pada permulaan output.
Contoh keadaan sedemikian adalah apabila kita ingin membuat sandaran/memulihkan data tersembunyi antara Mbr
dan partition pertama pada cakera, yang biasanya bermula pada sektor 2048
, atas sebab penjajaran. The 2047
sektor kawasan ini biasanya mengandungi, pada warisan Mbr
Persediaan Partition, Tahap 1.5 dari grub bootloader. Bagaimana kita boleh mengarahkan DD untuk mengklon hanya kawasan ini, tanpa memasukkan Mbr
? Yang perlu kita lakukan hanyalah menggunakan Langkau
pilihan:
$ sudo dd if =/dev/sda of = hidden-data-selepas kiraan-mbr = 2047 skip = 1
Dalam kes ini kami mengarahkan DD untuk menyalin 2047
blok 512
bait dari cakera /dev /sda bermula dari yang kedua. Dalam keadaan yang bertentangan, apabila kita ingin memulihkan data klon dan tulisnya semula di zon cakera yang sama, kita mahu menggunakan pilihan Seek, yang melangkau bilangan blok yang ditentukan pada permulaan output:
$ sudo dd if = hidden-data-selepas-mbr of =/dev/sda Seek = 1
Dalam kes ini kami mengarahkan DD untuk menyalin data dari Hidden-Data-selepas-MBR
dan menulisnya di /dev/sda
Blok peranti bermula dari blok kedua.
Memampatkan data yang dibaca oleh DD
Seperti yang telah kita katakan sebelum ini, salah satu operasi yang paling biasa dilakukan dengan DD ialah kloning cakera. Perintah DD menghasilkan klon sempurna cakera, kerana ia salinan peranti blok byte oleh byte, jadi kloning cakera 160 gb, menghasilkan sandaran saiz yang sama. Semasa mengkloning cakera ke fail, kami boleh paip data yang dibaca oleh DD walaupun utiliti mampatan seperti gzip
, untuk mengoptimumkan hasilnya dan mengurangkan saiz fail akhir. Katakanlah sebagai contoh, kami ingin membuat klon peranti blok keseluruhan /dev /sda, kami boleh menulis:
$ sudo dd if =/dev/sda bs = 1m | gzip -c -9> sda.DD.Gz
Dalam contoh di atas, kami mengarahkan DD untuk membaca dari peranti /dev /sda, dan kami juga menukar saiz blok menjadi 1m, yang dapat memberi kami prestasi yang lebih baik dalam situasi tersebut. Kami kemudian mengemas data, memproses selanjutnya dengan gzip
program yang kami gunakan dengan -c
(ringkasan untuk --to-stdout
) dan -9
pilihan yang mengarahkan program untuk menggunakan mampatan maksimum yang tersedia. Akhirnya, kami mengalihkan output ke "SDA.DD.Fail gz ". Dengan cara, jika anda ingin mengetahui lebih lanjut mengenai pengalihan semula
Anda boleh membaca artikel kami mengenai perkara ini.
Mengelap peranti blok
Satu lagi kes penggunaan DD, adalah penyapu peranti. Terdapat banyak situasi di mana kita mungkin perlu melakukan operasi sedemikian: kita mungkin mahu menjual cakera, dan pastikan kandungannya sebelumnya telah dipadamkan sepenuhnya untuk alasan privasi yang jelas, atau kita mungkin mahu menghapuskan data sebelum membuat penyulitan. Dalam kes pertama ia cukup untuk menimpa cakera dengan sifar:
$ sudo dd if =/dev/sifar bs = 1m of =/dev/sda
Perintah di atas mengarahkan DD untuk dibaca dari peranti /dev /Zero yang memberikan aksara null dan tuliskannya ke peranti sehingga ia diisi sepenuhnya.
Sebelum menubuhkan lapisan penyulitan pada sistem kami, kami mungkin ingin mengisi cakera dengan data rawak, untuk menjadikan sektor ITS yang akan mengandungi data yang tidak dapat dibezakan dari yang kosong dan elakkan kebocoran metadata. Dalam kes ini kita mahu membaca data dari /dev/rawak
atau /dev/urandom
peranti:
$ sudo dd if =/dev/urandom bs = 1m of =/dev/sda
Kedua -dua arahan akan memerlukan sejumlah besar masa untuk selesai, bergantung pada saiz dan jenis peranti blok yang dipersoalkan dan sumber data rawak yang digunakan, /dev/rawak
lebih perlahan (ia menghalang sehingga ia tidak mengumpulkan bunyi alam sekitar yang cukup), tetapi mengembalikan data rawak yang lebih tinggi daripada /dev/urandom
.
Menukar data
The Conv
Pilihan DD digunakan untuk menggunakan penukaran data. Pilihan mesti disediakan dengan senarai simbol yang dipisahkan koma sebagai hujah. Di sini beberapa yang paling banyak digunakan:
- Noerror - Ini menggunakan DD terus walaupun selepas ralat baca ditemui;
- NOTRUNC - Pilihan ini mengarahkan DD untuk tidak memotong fail output;
- Sync - Pilihan ini mempunyai rasa terutama apabila digunakan bersama dengan Noerror. Ia mengarahkan DD untuk pad setiap blok input dengan nuls.
Kes biasa di mana kita mungkin mahu menjalankan DD bersama -sama dengan Conv = Sync, Noerror
pilihan, adalah semasa mengkloning cakera yang mengandungi sektor yang rosak. Dalam kes sedemikian Noerror
pilihan akan membuat DD terus berjalan walaupun sektor itu tidak dapat dibaca dengan jayanya, dan SYNC
pilihan akan dibuat supaya jumlah data gagal dibaca olehnya Nuls
, supaya panjang data dipelihara walaupun data sebenar hilang (kerana tidak mungkin untuk membacanya).
Kesimpulan
Dalam tutorial ini, kami belajar menggunakan arahan DD yang sangat kuat. Kami melihat beberapa kes biasa program ini digunakan, seperti pengklonan cakera, dan kami belajar mengetahui sintaksnya dan pilihan yang lebih penting yang dapat kami gunakan untuk mengubah suai kelakuannya. Oleh kerana DD adalah utiliti yang sangat kuat, ia mesti digunakan dengan perhatian yang melampau: hanya dengan menukar sasaran input dan output, seseorang boleh, dalam beberapa situasi, memusnahkan data sepenuhnya pada cakera.
Tutorial Linux Berkaitan:
- Perkara yang hendak dipasang di Ubuntu 20.04
- Pengenalan kepada Automasi, Alat dan Teknik Linux
- Menguasai Gelung Skrip Bash
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Cara mengklon sistem linux
- Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
- Muat turun linux
- Partition klon di linux
- Gelung bersarang dalam skrip bash
- Cara Dual Boot Kali Linux dan Windows 10