Bagaimana perintah DD bekerja di Linux dengan contoh

Bagaimana perintah DD bekerja di Linux dengan contoh

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

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
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