Perintah dd di Linux adalah utilitas untuk menyalin dan mengonversi file dan memiliki banyak kegunaan praktis.
Telah disarankan bahwa nama tersebut merupakan turunan dari fungsi Bahasa Kontrol Pekerjaan IBM yang lebih lama di mana dd adalah singkatan dari "Data Definition". Di Linux, singkatan adalah singkatan dari “Data Duplicator” atau “Disk Dump” atau berbagai aliterasi lainnya tergantung pada sumber Anda.
Bahkan mungkin mendapatkan julukan pedih "penghancur data" yang membawa saya ke poin penting. Harap berhati-hati saat mempraktikkan perintah dd.
Perintah ini mampu melakukan beberapa kerusakan serius. Pastikan untuk memeriksa kembali sintaks Anda untuk menghindari kesalahan yang mahal. Anda tidak ingin menjadi orang yang mengacaukan nama partisi dan menyaksikan dengan kesakitan karena partisi root mereka dihancurkan dan diganti dengan file kosong.
Mengenal perintah dd
Berikut sintaks dari perintah dd:
dd if=<filename> of=<filename> [options]
Ada berbagai kegunaan untuk perintah ini, saya akan memperkenalkan beberapa pendekatan umum.
Media Fisik / Klon Partisi/Cadangan
Dalam sintaks di atas, 'if' dan 'of' masing-masing untuk file input dan file output. Ini adalah fungsi inti dari dd. Ini menduplikasi data dari satu sumber ke sumber lainnya. Anda tidak perlu menggunakan media fisik dengan dd.
Manipulasi Teks
Dimungkinkan untuk menggunakan stdin (input standar) dari keyboard Anda untuk mengumpulkan input dan mengarahkannya ke file. Anda juga dapat dengan cepat mengonversi huruf besar dan berbagai alat pengeditan teks berguna lainnya disertakan dalam halaman manual.
Saya sebutkan IBM sebelumnya menyinggung sejarah panjang program ini. Salah satu fungsi asli dari perintah ini sebenarnya berpusat pada konversi EBCDIDC, skema pengkodean yang dibuat oleh IBM, ke ASCII.
Manipulasi Sistem File
Anda juga dapat menyalin file dengannya, tetapi perintah cp direkomendasikan di atas dd untuk aplikasi sederhana ini. Kami memiliki artikel di mana Anda dapat membaca tentang perintah cp.
Beberapa Catatan Perilaku
Saat menyalin dengan dd
, Anda juga harus menyadari bahwa secara default akan menyalin lengkap informasi dari sumber tertentu.
Artinya jika Anda mencoba menduplikasi partisi atau disk, itu juga akan menyalin ruang kosong.
Jadi, misalnya, jika Anda mengkloning hard drive dengan 4 TB, Anda memerlukan drive tujuan dengan setidaknya 4 TB untuk mencegah file dan kesalahan terpotong. Ingat juga, jika disk hanya memiliki data senilai 1 TB, dd masih akan menyalin ruang 3 TB lainnya. Itu langkah buruk yang akan membuang banyak waktu dan sumber daya.
Ada beberapa kendala yang dapat kita tambahkan ke dd dan tindakan lain yang dapat kita ambil untuk mengubah perilaku ini. Sebenarnya ada banyak sekali kontrol yang dapat digunakan bersama dengan dd. Saya akan mencoba membahas beberapa yang menurut saya paling bermanfaat bagi pembaca kami, tetapi tujuan artikel ini adalah untuk memberikan dasar pada dd, bukan mendokumentasikan setiap fungsi yang mungkin.
Perhatian! Untuk berlatih, gunakan Mesin Virtual
Saya mendorong Anda untuk membuat konsep tujuan Anda dan menjalankannya dengan hati-hati untuk menghindari kerusakan atau penghancuran file penting. Jelas, kami tidak bertanggung jawab atas hilangnya informasi Anda. Jika Anda membuat kesalahan. Jangan bilang kami tidak memperingatkan Anda.
Saya sarankan berlatih di mesin virtual tiruan untuk membiasakan diri Anda sebelum mencoba mengubah aset "dunia nyata" apa pun. Ini karena perintah dd memiliki kemampuan untuk mengubah dan dengan demikian merusak sistem file Anda jika Anda menggunakannya secara tidak benar.
Untuk tutorial ini, saya memutuskan untuk mencoba sesuatu di luar keluarga Debian dan membuat salinan Fedora 31 di VirtualBox.
5 Contoh praktis dari perintah dd
Dengan tidak adanya peringatan dan beberapa informasi kontekstual, kami siap untuk beralih ke beberapa aplikasi untuk perintah sederhana namun kuat ini.
Contoh 1:Disk kloning
Mengkloning satu disk ke disk lain bisa sangat mudah dengan dd. Sebagai contoh saya, saya memiliki dua disk bernama 'sda' dan 'sdb'.
Ingatlah bahwa 'sda' akan mencoba menyalin dirinya sendiri ke 'sdb' menggunakan seluruh konten drive, bukan hanya datanya.
Anda perlu mengalokasikan cukup ruang pada file keluaran Anda untuk mengakomodasi ruang yang tidak terpakai di sektor ini. Anda juga dapat memilih untuk mempartisi ulang drive ke ukuran tepat yang saat ini diisi oleh data. Saya akan merekomendasikan metode ini. Ini akan mengurangi jumlah waktu yang diperlukan untuk melakukan operasi dan membuat dokumen yang lebih berguna.
Saat Anda siap untuk mengkloning disk, Anda dapat menjalankan fdisk
untuk mengidentifikasi disk Anda, partisinya, dan kapasitasnya.
sudo fdisk -l
Menjalankan perintah ini akan mencantumkan drive dan partisi yang tersedia dan ukurannya masing-masing. Ini dapat membantu untuk mengidentifikasi perangkat target Anda dengan benar.
Sekali lagi, untuk aplikasi kami, kami menggunakan nama 'sda' dan 'sdb' dan kami akan menganggap ukurannya sama.
[[email protected] ~]$ sudo dd if=/dev/sda of=/dev/sdb
[[enter pw for sudo]]
dd: writing to 'dev/sdb': No space left on device
8108369+0 records in
8108369+0 records out
4151484416 bytes (4.2 GB, 3.9 GiB) copied, 12.3602 s 336 MB/s
Outputnya memberi tahu kami bahwa penulisan berhasil, kami dapat mengabaikan pesan yang mengatakan tidak ada lagi ruang tersisa di 'sdb'.
Ringkasan juga mencantumkan jumlah data yang disalin, berapa lama, dan seberapa cepat disalin. Kita akan melihat ini sedikit lebih banyak saat saya membahas ukuran blok.
Contoh 2:Mencadangkan partisi disk
Langkah-langkah untuk mengkloning perangkat dan mencadangkan partisi serupa. Alih-alih file target kami menjadi perangkat, kami dapat membuat file '.img' (gambar disk mentah).
Katakanlah sistem kami memiliki partisi terpisah untuk direktori home kami di 'sda2' dan kami ingin mencadangkannya ke file bernama 'home_backup.img' di direktori kami saat ini.
dd if=/dev/sda2 of=home_backup.img
Semudah itu! Jadi sekarang Anda tidak punya alasan untuk tidak memiliki rutinitas pencadangan yang baik.
Tentu, itu mudah, tetapi selalu ada lebih banyak hal untuk dipelajari.
Menangani ukuran blok dalam perintah dd
Sebelum kita masuk ke contoh berikutnya, mari kita bicara tentang BS, atau ukuran blok. Jika Anda pernah melihat ini digunakan untuk menentukan nilai dengan perintah dd, Anda mungkin bertanya-tanya mengapa itu ada.
Jika rasa ingin tahu Anda mengarahkan Anda ke penelusuran internet, saya berani bertaruh bahwa Anda mungkin masih bertanya-tanya mengapa itu ada di sana.
Saya akan mencoba yang terbaik untuk memberikan penjelasan bahasa yang sederhana. Perangkat blok biasanya berupa media fisik dengan penyimpanan terbatas.
Anda dapat mencari informasi pada media seperti disk dengan mencari blok data tertentu. Jadi misalnya, sistem dapat membaca CD-ROM dan mencari informasi mulai dari blok 500 (angka sembarang). Itu juga dapat digunakan untuk "memesan" informasi dan mungkin menggunakan info dari blok 500 hingga blok 1500.
Blok-blok ini dapat disegmentasi dengan cara yang membuatnya efisien untuk dianalisis oleh sistem. Ini mungkin mencerminkan ruang penyimpanan media, atau spesifikasi sistem standar yang kemungkinan terkait dengan media tersebut.
Saya akan melanjutkan dengan contoh CD-ROM yang memiliki ukuran blok yang ditentukan sendiri (2048). Setiap blok harus memiliki maksimum 2048 byte. Bahkan jika sebuah blok hanya berisi 100 byte data, itu akan tetap menggunakan 2048 byte yang sama.
Ada beberapa kasus di mana Anda mungkin ingin menentukan ukuran blok untuk membuat dd berjalan lebih cepat atau mencegah kerusakan data. Kembali ke contoh CD-ROM kami, membuat blok dengan ukuran yang berbeda dapat menyebabkan anomali saat tiba waktunya untuk membaca data.
Jika dibiarkan tidak terdefinisi, dd akan menggunakan ukuran blok 512. Ini adalah ukuran blok terkecil yang dapat dibaca oleh hard drive biasa.
Jika media Anda tidak terbatas pada ukuran blok tertentu, Anda mungkin aman menyesuaikannya untuk kinerja (waktu penulisan). Mari kita lihat beberapa contohnya.
Kinerja dengan ukuran blok yang tidak ditentukan
[[email protected] ~]$ sudo dd if=/dev/sda of=home_backup.img
[sudo] password for linuxhandbook:
dd: writing to 'home_backup.img': No space left on device
31974953+0 records in
31974952+0 records out
16371175424 bytes (16 GB, 15 GiB) copied, 113.848 s, 144 MB/s
Kinerja dengan ukuran blok 1024
[[email protected] ~]$ sudo dd if=/dev/sda of=home_backup.img bs=1024
[sudo] password for linuxhandbook:
dd: error writing 'home_backup.img': No space left on device
15987477+0 records in
15987476+0 records out
16371175424 bytes (16 GB, 15 GiB) copied, 75.4371 s, 217 MB/s
Anda dapat melihat bahwa proses dilakukan dengan kecepatan yang lebih cepat. Lari lain dengan ukuran blok 4096 lebih cepat dengan kecepatan 327 MB/s. Caching sistem juga dapat berperan dalam kecepatan, tetapi itu adalah topik untuk hari lain.
Anda mungkin telah memperhatikan variasi dalam jumlah catatan masuk dan keluar. Ini karena kami mengubah ukuran setiap blok dan oleh karena itu kapasitas masing-masing blok, meskipun file keluaran tetap berukuran sama. Untuk alasan ini, menyesuaikan nilai bs dapat memiliki konsekuensi yang tidak diinginkan. Misalnya, dapat menyebabkan perbedaan saat checksum dilakukan.
Contoh 3:Hapus data dan kosongkan Disk
Ingat semua peringatan dari sebelumnya? Perintah ini akan menggantikan setiap blok 'sda' dengan nol.
dd if=/dev/zero of=/dev/sda
Bagaimana cara kerjanya? Pada dasarnya, sama seperti semua perintah dd masuk dan keluar lainnya. Apa itu '/dev/zero'?
Ini adalah perangkat palsu yang disertakan pada sistem operasi Unix/Linux yang akan menulis nol ke file hingga mencapai akhir file.
Anda juga dapat menggunakan 'dev/random' yang mengeluarkan bit data acak. Ini mungkin tidak diperlukan jika Anda berencana menggunakan file gambar mentah untuk mengganti konten karena menggunakan dd akan menyalin ruang yang tidak terpakai.
Perhatikan bahwa beberapa orang jahat menipu pengguna yang tidak menaruh curiga dalam menjalankan perintah ini di berbagai forum Linux. Sekarang setelah Anda mengetahui apa yang dilakukan perintah ini, Anda tidak akan menjadi mangsa lelucon jahat ini.
Contoh 4:Buat .ISO dari CD/DVD
Anda dapat menyalin langsung dari drive cd-rom jika komputer Anda masih memilikinya. Sebelumnya saya menyebutkan bahwa ukuran byte standar cd-rom adalah 2048. Kami akan mengatur ukuran byte agar sesuai dengan itu untuk menghindari masalah konversi dan kemudian menambahkan beberapa perintah lainnya.
dd if=/dev/cdrom of=space_jam_dvd.iso bs=2048 conv=noerror,sync
Mari saya jelaskan beberapa hal. Dengan conv=noerror , kesalahan apa pun akan diabaikan. Program akan terus berlanjut hingga blok terakhir tanpa henti. Itu tidak akan berhenti untuk mereka.
Saat digunakan bersama dengan 'noerror', 'sync' akan memastikan bahwa setiap blok data yang hilang akan secara otomatis diisi dengan informasi nol.
Ini berarti data yang ada akan dipetakan ke lokasi yang sama, mungkin mempertahankan konten sebanyak mungkin.
Penting untuk memastikan bahwa file sumber dan tujuan Anda memiliki set 'bs' yang sama untuk operasi ini, jika tidak, mereka tidak akan mendapatkan hasil yang diinginkan.
Contoh 5:Buat USB yang dapat di-boot
Anda dapat menggunakan dd untuk membuat USB yang dapat di-boot dan itu semudah yang Anda harapkan. Sebenarnya, ini adalah salah satu penggunaan paling populer dari perintah dd.
Ada satu langkah ekstra yang terlibat di sini. Kami menggunakan perintah mkfs untuk membangun sistem file ke USB kami sebelum menjalankan 'dd'.
Tanpa opsi, ia menggunakan sistem ext2 default. Jadi dengan asumsi USB yang ingin kita siapkan disebut 'sdb' dan kita ingin mengubah sistem file ke ext4, kita akan menjalankan perintah berikut:
sudo mkfs.ext4 /dev/sdb
Jika Anda ingin menggunakan dengan sistem Windows, Anda dapat mengganti bagian pertama dari perintah dengan mkfs.ntfs.
Anda juga dapat menggunakan sintaks berikut:
mkfs -t [for type] $filesystem.
Setelah media yang dapat di-boot disiapkan, kita dapat melanjutkan ke perintah dd.
dd if=someFile.iso of=/dev/sdb
Gunakan gambar .iso yang dapat dipasang dan salin ke nama drive yang sesuai untuk perangkat usb Anda.
Kesimpulan
Terima kasih sudah membaca. Saya harap Anda menikmati primer ini di 'dd'. Ada begitu banyak cara berbeda yang dapat Anda gunakan untuk menggunakan perintah ini. Saya mencoba untuk menutupi banyak contoh yang lebih berguna. Jika Anda memiliki sesuatu yang ingin Anda lihat atau pertanyaan langsung, saya akan dengan senang hati membantu. Beri tahu saya pendapat Anda di bawah di komentar.