Bagaimana perintah DD bekerja di Linux dengan contoh
- 3189
- 1026
- Ricardo Gottlieb
DD adalah utilitas yang sangat kuat dan berguna yang tersedia di sistem operasi Unix dan Unix. Seperti yang dinyatakan dalam manualnya, tujuannya adalah untuk mengonversi dan menyalin file. Pada sistem operasi Unix dan Unix seperti Linux, hampir semuanya diperlakukan sebagai file, bahkan perangkat blok: Ini membuat DD bermanfaat, di antara yang lain, untuk mengkloning disk atau menghapus data. Itu DD
Utilitas tersedia di luar kotak bahkan dalam pemasangan paling minim dari semua distribusi. Dalam tutorial ini kita akan melihat cara menggunakannya dan bagaimana kita dapat memodifikasi perilakunya dengan menggunakan beberapa opsi yang paling umum digunakan untuk membuat pekerjaan administrasi sistem Linux Anda lebih mudah.
Dalam tutorial ini Anda akan belajar:
- Cara menggunakan dd
- Cara memodifikasi perilaku program dengan menggunakan beberapa opsi yang paling umum digunakan
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi-independen |
Perangkat lunak | Tidak diperlukan perangkat lunak khusus untuk mengikuti tutorial ini kecuali DD |
Lainnya | Keakraban dengan antarmuka baris perintah dan pengalihan |
Konvensi | # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa |
Penggunaan dasar
Sintaks dasar dari DD
sangat sederhana. Secara default program dibaca dari input standar
dan menulis kepada output standar
. Namun, kami dapat menentukan alternatif memasukkan
Dan keluaran
file dengan menggunakan masing -masing jika
Dan dari
Opsi baris perintah. Di sini DD berbeda dari sebagian besar perintah shell, karena tidak menggunakan standar --pilihan
atau -Hai
Sintaks untuk opsi.
Mari kita lihat contoh penggunaan DD. Salah satu kasus penggunaan yang paling khas untuk utilitas adalah cadangan catatan boot master: sektor pertama pada warisan Mbr
Sistem yang dipartisi. Panjang sektor ini biasanya 512
byte: itu berisi tahap 1 dari grub bootloader
dan tabel partisi disk. Misalkan kita ingin membuat cadangan Mbr
Disk /dev /sda, yang harus kita lakukan adalah meminta DD dengan sintaks berikut:
$ sudo dd if =/dev/sda bs = 512 Count = 1 dari = mbr.img
Mari kita analisis perintah di atas. Pertama -tama kami diawali dengan doa DD yang sebenarnya dengan perintah sudo, untuk menjalankan perintah dengan hak administratif. Ini diperlukan untuk mengakses /dev/sda
blok perangkat. Kami kemudian meminta DD yang menentukan sumber input dengan jika
opsi dan file output dengan dari
. Kami juga menggunakan BS
Dan menghitung
Opsi untuk menentukan masing -masing jumlah data yang harus dibaca pada satu waktu, atau ukuran blok, dan jumlah total blok untuk dibaca. Dalam hal ini kita bisa menghilangkan BS
opsi, sejak 512
byte adalah ukuran default yang digunakan oleh DD. Jika kita menjalankan perintah di atas, kita akan melihat bahwa itu menghasilkan output berikut:
1+0 catatan dalam 1+0 mencatat keluar 512 byte disalin, 0.000657177 s, 779 kb/s
Output di atas menunjukkan kepada kita jumlah catatan yang dibaca dan ditulis, jumlah data yang disalin, jumlah waktu di mana tugas selesai dan kecepatan transfer. Kita sekarang harus memiliki klon Mbr
sektor, disimpan di mbr.img
mengajukan. Jelas file sufiks tidak memiliki makna nyata di Linux, jadi penggunaan “.img "seseorang benar -benar sewenang -wenang: Anda mungkin ingin menggunakan".DD "untuk membiarkan nama file mencerminkan perintah yang digunakan untuk membuat file.
Dalam contoh di atas kita menggunakan BS
opsi untuk mendefinisikan kedua jumlah byte yang harus dibaca dan ditulis sekaligus. Untuk mendefinisikan nilai secara terpisah untuk kedua operasi, kami dapat menggunakan IBS
Dan obs
Opsi sebagai gantinya, yang ditetapkan, masing -masing, jumlah byte yang dibaca dan ditulis sekaligus.
Melewatkan blok saat membaca dan menulis
Ada kasus di dalam kita mungkin ingin melewatkan sejumlah ukuran blok saat membaca atau menulis ke file. Dalam kasus seperti itu kita harus menggunakan melewati
Dan mencari
Opsi, masing -masing: mereka digunakan untuk melewatkan blok data yang ditentukan, pada awal input dan pada awal output.
Contoh dari situasi seperti itu adalah ketika kita ingin mencadangkan/mengembalikan data tersembunyi antara Mbr
dan partisi pertama pada disk, yang biasanya dimulai di sektor 2048
, untuk alasan penyelarasan. Itu 2047
Sektor -sektor daerah ini biasanya mengandung, pada warisan Mbr
Pengaturan Partisi, Tahap 1.5 dari grub bootloader. Bagaimana kita dapat menginstruksikan DD untuk mengkloning area ini, tanpa memasukkan Mbr
? Yang perlu kita lakukan adalah menggunakan melewati
pilihan:
$ sudo dd if =/dev/sda of = Hidden-data-after-mbr Count = 2047 Skip = 1
Dalam hal ini kami menginstruksikan DD untuk menyalin 2047
blok 512
byte dari disk /dev /sda mulai dari yang kedua. Dalam situasi yang berlawanan, ketika kami ingin mengembalikan data yang dikloning dan menulisnya kembali di zona disk yang sama, kami ingin menggunakan opsi TETIK, yang melewatkan jumlah blok yang ditentukan pada awal output:
$ sudo dd if = hidden-data-after-mbr dari =/dev/sda seek = 1
Dalam hal ini kami menginstruksikan DD untuk menyalin data dari Hidden-data-after-mbr
dan menulisnya di /dev/sda
perangkat blok mulai dari blok kedua.
Mengompres data yang dibaca oleh DD
Seperti yang sudah kami katakan sebelumnya, salah satu operasi paling umum yang dilakukan dengan DD adalah kloning disk. Perintah DD menghasilkan klon yang sempurna dari disk, karena menyalin byte perangkat blok dengan byte, jadi mengkloning disk 160 GB, menghasilkan cadangan dengan ukuran yang sama persis. Saat mengkloning disk ke file, namun kami dapat menyalurkan data yang dibaca oleh DD meskipun utilitas kompresi seperti Gzip
, untuk mengoptimalkan hasil dan mengurangi ukuran file akhir. Katakanlah misalnya kami ingin membuat klon dari seluruh perangkat blok /dev /sda, kami bisa menulis:
$ sudo dd if =/dev/sda bs = 1m | GZIP -C -9> SDA.DD.GZ
Dalam contoh di atas kami menginstruksikan DD untuk membaca dari perangkat /dev /sda, dan kami juga mengubah ukuran blok menjadi 1m, yang dapat memberi kami kinerja yang lebih baik dalam situasi seperti itu. Kami kemudian menyalurkan data, lebih lanjut memprosesnya dengan Gzip
program yang kami gunakan dengan -C
(kependekan dari --to-stdout
) Dan -9
opsi yang menginstruksikan program untuk menggunakan kompresi maksimum yang tersedia. Akhirnya, kami mengarahkan output ke “SDA.DD.file GZ ”. Ngomong -ngomong, jika Anda ingin mempelajari lebih lanjut tentang pengalihan
Anda dapat membaca artikel kami tentang masalah ini.
Menyeka perangkat blok
Kasing penggunaan DD lainnya, adalah penghapusan perangkat. Ada banyak situasi di mana kami mungkin perlu melakukan operasi seperti itu: kami mungkin ingin menjual disk, dan pastikan konten sebelumnya benar -benar terhapus karena alasan privasi yang jelas, atau kami mungkin ingin menghapus data sebelum mengatur enkripsi. Dalam kasus pertama akan cukup untuk menimpa disk dengan nol:
$ sudo dd if =/dev/nol bs = 1m dari =/dev/sda
Perintah di atas menginstruksikan DD untuk membaca dari perangkat /dev /nol yang menyediakan karakter nol dan menulisnya ke perangkat sampai sepenuhnya diisi.
Sebelum menyiapkan lapisan enkripsi pada sistem kami, kami mungkin ingin mengisi disk dengan data acak sebagai gantinya, untuk membuat sektor -sektornya yang akan berisi data yang tidak dapat dibedakan dari yang kosong dan menghindari kebocoran metadata. Dalam hal ini kami ingin membaca data dari /dev/acak
atau /dev/urandom
Perangkat:
$ sudo dd if =/dev/urandom bs = 1m dari =/dev/sda
Kedua perintah akan membutuhkan jumlah waktu yang signifikan untuk menyelesaikannya, tergantung pada ukuran dan jenis perangkat blok yang dimaksud dan sumber data acak yang digunakan, /dev/acak
Menjadi lebih lambat (memblokir sampai tidak mengumpulkan noise lingkungan yang cukup), tetapi mengembalikan data acak berkualitas lebih tinggi dari /dev/urandom
.
Mengonversi data
Itu Conv
Opsi DD digunakan untuk menerapkan konversi data. Opsi harus disediakan dengan daftar simbol yang terpisah koma sebagai argumen. Di sini beberapa yang paling banyak digunakan:
- NoError - Ini menggunakan DD Lanjutkan bahkan setelah kesalahan baca ditemui;
- notrunc - Opsi ini menginstruksikan DD untuk tidak memotong file output;
- Sinkronisasi - Opsi ini memiliki akal terutama saat digunakan bersama dengan NoError. Ini menginstruksikan DD untuk menempatkan setiap blok input dengan nuls.
Kasus khas di mana kita mungkin ingin menjalankan DD bersama dengan Conv = Sync, NoError
opsi, adalah saat mengkloning disk yang berisi sektor yang rusak. Dalam kasus seperti itu noerror
opsi akan membuat DD terus berjalan bahkan jika sektor itu tidak dapat dibaca dengan sukses, dan sinkronisasi
opsi akan membuat sehingga jumlah data gagal dibaca Nuls
, sehingga panjang data dipertahankan bahkan jika data aktual hilang (karena tidak mungkin membacanya).
Kesimpulan
Dalam tutorial ini kami belajar menggunakan perintah DD yang sangat kuat. Kami melihat beberapa kasus khas program ini digunakan, seperti kloning disk, dan kami belajar untuk mengetahui sintaksisnya dan opsi yang lebih penting yang dapat kami gunakan untuk memodifikasi perilakunya. Karena DD adalah utilitas yang sangat kuat, itu harus digunakan dengan perhatian ekstrem: hanya dengan mengalihkan target input dan output, seseorang dapat, dalam beberapa situasi, benar -benar menghancurkan data pada disk.
Tutorial Linux Terkait:
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Menguasai loop skrip bash
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Cara mengkloning sistem linux
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- Unduh Linux
- Partisi klon di Linux
- Loop bersarang dalam skrip bash
- Cara Dual Boot Kali Linux dan Windows 10
- « Cara membuat multiboot usb dengan linux
- Tidak bisa mendapatkan kunci var lib dpkg lock - ubuntu/debian »