GNU/Linux >> Belajar Linux >  >> Linux

Perintah DD Linux - 15 Contoh dengan Semua Opsi

Perintah dd Linux adalah salah satu utilitas paling kuat yang dapat digunakan dalam berbagai cara. Alat ini terutama digunakan untuk menyalin dan mengonversi data, oleh karena itu merupakan singkatan dari duplikator data. Alat ini dapat digunakan untuk:

  • Mencadangkan dan memulihkan seluruh hard drive atau partisi.
  • Membuat sistem file virtual dan mencadangkan gambar CD atau DVD yang disebut file ISO
  • Salin wilayah file perangkat mentah seperti mencadangkan MBR (master boot record).
  • Mengonversi format data seperti ASCII ke EBCDIC.
  • Mengubah huruf kecil menjadi huruf besar dan sebaliknya.

Hanya superuser yang dapat menjalankan perintah ini. Anda harus sangat berhati-hati saat menggunakan perintah ini karena penggunaan yang tidak tepat dapat menyebabkan kehilangan data yang sangat besar. Jadi, beberapa orang menganggap alat ini sebagai penghancur data.

Sintaks perintah dd

Penggunaan dasar perintah dd agak mudah karena hanya membutuhkan dua argumen:jika =untuk menentukan file masukan dan dari =untuk menentukan file keluaran. Argumen untuk opsi tersebut dapat berupa file atau memblokir perangkat. Namun, saya tidak akan merekomendasikan menggunakan dd untuk menyalin file karena cp melakukannya dengan cara yang lebih sederhana. Namun, Anda dapat menggunakannya untuk mengkloning hard disk. Sintaksnya adalah

dd if=<source file name> of=<target file name> [Options]

Kita akan mempelajari berbagai opsi sambil mempelajari contoh perintah dd.

1. Mencadangkan dan memulihkan seluruh disk atau partisi

Dimungkinkan untuk menyimpan semua data dari seluruh disk/partisi ke disk/partisi lain. Bukan salinan sederhana seperti perintah cp tetapi salinan ukuran blok.

a. Cadangkan seluruh disk ke disk

Anda dapat menyalin semua data (seluruh disk) dari disk /dev/sda ke /dev/sdb . dd tidak tahu apa-apa tentang sistem file atau partisi; itu hanya akan menyalin semuanya dari /dev/sda ke /dev/sdb . Anda perlu menunjukkan ukuran blok yang akan disalin pada waktu dengan bs pilihan. Jadi, ini akan mengkloning disk dengan data yang sama di partisi yang sama.

# dd if=/dev/sda of=/dev/sdb bs=4096 conv=noerror,sync
97281+0 records in
97280+0 records out
99614720 bytes (100 MB) copied, 2.75838 s, 36.1 MB/s

Ini hanya berfungsi jika perangkat kedua sama besar atau lebih besar dari yang pertama. Jika tidak, Anda mendapatkan partisi yang terpotong dan tidak berharga di partisi kedua. Di sini, jika adalah singkatan dari file input , dari singkatan untuk file output dan bs adalah singkatan dari ukuran blok (jumlah byte yang akan dibaca/ditulis pada suatu waktu). Pastikan Anda menggunakan ukuran blok dalam kelipatan 1024 byte yang sama dengan 1KB. Jika Anda tidak menentukan ukuran blok, gunakan ukuran blok default 512 byte. conv parameter nilai tidak ada kesalahan memungkinkan alat untuk terus menyalin data meskipun menemukan kesalahan. Opsi sinkronisasi memungkinkan untuk menggunakan I/O yang disinkronkan.

b. Membuat dd disk image (file image)

Anda dapat membuat gambar disk atau gambar file. Mencadangkan disk ke gambar akan lebih cepat daripada menyalin data yang tepat. Selain itu, citra disk membuat pemulihan menjadi lebih mudah.

# dd if=/dev/sda of=/tmp/sdadisk.img

Anda dapat menyimpan file output di tempat yang Anda inginkan tetapi Anda harus memberikan nama file yang diakhiri dengan .img ekstensi seperti di atas. Alih-alih /tmp/sdadisk.img , Anda dapat menyimpannya misalnya di /sdadisk.img jika Anda mau.

c. Membuat gambar disk terkompresi

Karena dd membuat konten yang tepat dari seluruh disk, itu berarti terlalu banyak ukuran yang dibutuhkan. Anda dapat memutuskan untuk mengompresi gambar disk dengan perintah di bawah ini

# dd if=/dev/vda | gzip -c >/tmp/vdadisk.img.gz

pipa | operator membuat output pada perintah kiri menjadi input pada perintah kanan. -c opsi menulis output pada output standar dan menjaga file asli tidak berubah.

d. Cadangkan partisi atau klon satu partisi ke partisi lain

Alih-alih seluruh disk, Anda hanya dapat membuat cadangan partisi sederhana. Anda hanya perlu menunjukkan nama partisi di file input seperti di bawah ini

# dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=noerror,sync

Ini akan menyinkronkan partisi /dev/sda1 ke /dev/sdb1 . Anda harus memverifikasi bahwa ukuran /dev/sdb1 harus lebih besar dari /dev/sda1 . Atau Anda bisa membuat gambar partisi seperti di bawah ini

# dd if=/dev/sda1 of=/tmp/sda1.img

e. Memulihkan disk atau gambar partisi

Menyimpan disk atau partisi membantu memulihkan semua data, jika ada masalah dengan drive asli kami. Untuk memulihkan, Anda perlu membalik file input dengan file output yang ditunjukkan selama operasi pencadangan seperti di bawah ini.

# dd if=/tmp/sdadisk.img of=/dev/sda

Anda akan mengambil data yang ada sebelum operasi pencadangan dan bukan setelah operasi

e. Memulihkan gambar terkompresi

Anda harus terlebih dahulu menunjukkan file terkompresi dan file output yang merupakan disk yang dikompresi sebelumnya.

# gzip -dc /tmp/vdadisk.img.gz | dd of=/dev/vda

Opsi -d di sini adalah untuk membuka kompres. Perhatikan file keluaran. Anda dapat memasang disk yang dipulihkan untuk melihat kontennya. Perhatikan bahwa Anda akan menambahkan data setelah operasi pencadangan kompresi terakhir.

2. Membuat sistem file virtual/Mencadangkan gambar CD atau DVD sebagai file iso

Anda mungkin perlu membuat sistem file virtual di Linux karena beberapa alasan seperti membuat mesin virtual di host Linux Anda. Anda juga perlu membuat gambar iso cadangan dari CD atau DVD

a. Membuat sistem file virtual

Sistem file virtual adalah sistem file yang ada dalam file, yang pada gilirannya ada di disk fisik. Anda dapat memerlukannya untuk membuat misalnya perangkat swap atau loop tambahan atau mesin virtual. Kami membutuhkan /dev/zero yang merupakan file yang digunakan untuk membuat file tanpa data tetapi dengan ukuran yang diperlukan (file dengan semua nol). Dengan kata lain, ini akan membuat file data dengan semua nol dalam file yang akan memberikan ukuran file.

# dd if=/dev/zero of=/file bs=1024K count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.21755 s, 431 MB/s

Opsi count mengacu pada jumlah blok input yang akan disalin. Dikombinasikan dengan nilai ukuran blok, ini menunjukkan ukuran total yang akan disalin. Misalnya bs=1024k dan count=500 berikan ukuran=1024K*500 =524288000 byte =524MB

Sekarang mari kita periksa ukuran file kita

# ls -lh /file
-rw-r--r-- 1 root root 500M May 17 18:57 /file

Anda dapat melihat bahwa kami telah membuat sistem file virtual kami dengan ukuran yang ditunjukkan. Anda sekarang dapat menggunakannya untuk membuat perangkat loop atau disk virtual atau apa pun.

b. Ubah 512 byte pertama file dengan data nol

Jika selama operasi Anda menunjukkan file output yang ada, Anda akan kehilangan datanya. Untuk beberapa alasan, Anda mungkin perlu mengganti ukuran blok file keluaran.

dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc

notrunc opsi mengacu pada jangan potong file, hanya ganti 512 byte pertama, jika ada. Jika tidak, Anda akan mendapatkan file 512 byte

c. Membuat gambar iso cadangan dari CD atau DVD

Anda mungkin bertanya-tanya mengapa tidak menyalin konten CD ke direktori saja. Bagaimana Anda menangani sektor boot CD? Anda tidak dapat menemukannya sebagai file di perangkat karena itu hanya sektor pertama. Karena dd menyalin sektor demi sektor, di sisi lain, informasi tersebut juga akan disalin.

# dd if=/dev/cdrom of=/mycd.iso

Anda perlu tahu bahwa Anda harus menggunakan -o loop opsi, yang memungkinkan Anda memasang file seperti perangkat normal lainnya. Jadi, untuk memasang /mycd.iso pada /mnt/cd direktori, lakukan seperti di bawah ini

# mount -o loop /mycd.iso /mnt/cd

d) Buat Drive USB yang dapat di-boot

Mari kita asumsikan kita telah mengunduh gambar centos iso di sini ke direktori ini "~/Downloads/".

if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso - file input ada di jalur '~/Downloads/CentOS-8-x86_64-1905-dvd1.iso'

of=/dev/sdb - file keluaran berada di jalur '/dev/sdb'

bs=1M - Baca dari '~/Downloads/CentOS-8-x86_64-1905-dvd1.iso' dan tulis ke '/dev/sdb' 1 Megabyte data sekaligus.

# dd if=~/Downloads/CentOS-8-x86_64-1905-dvd1.iso of=/dev/sdb bs=1M

3. Mencadangkan dan memulihkan MBR

Bootloader GRUB paling sering disimpan di MBR drive yang dapat di-boot. MBR membentuk 512 byte pertama dari disk, memungkinkan penyimpanan hingga 466 byte untuk bootloader. Ruang tambahan akan digunakan untuk menyimpan tabel partisi untuk drive tersebut. Jika MBR rusak, kami tidak akan dapat melakukan booting ke Linux.

a. Mencadangkan MBR

Karena MBR merupakan 512 byte pertama dari disk, kita hanya perlu menyalin ukuran blok tersebut

# dd if=/dev/sda of=/tmp/sdambr.img bs=512 count=1

Dengan count=1 dan bs=512 , hanya 512 byte yang akan disalin yang sesuai dengan ukuran MBR kami.

Anda dapat menampilkan MBR yang disimpan dengan perintah od yang membuang file dalam oktal dan format lain seperti di bawah ini

# od -xa /tmp/sdambr.img
0000000    bf52    81f4    8b66    832d    087d    0f00    e284    8000
          R   ?   t soh   f  vt   - etx   }  bs nul  si eot   b nul nul
0000020    ff7c    7400    6646    1d8b    8b66    044d    3166    b0c0
          | del nul   t   F   f  vt  gs   f  vt   M eot   f   1   @   0

-a opsi  memilih karakter bernama dan -x memilih unit 2-byte heksadesimal

b. Mencadangkan data boot MBR tidak termasuk tabel partisi

Data MBR 512 byte terletak di sektor pertama hard disk. Ini terdiri dari bootstrap 446 byte, tabel partisi 64 byte dan tanda tangan 2 byte. Artinya, kita dapat mengecualikan tabel partisi dan tanda tangan byte saat mencadangkan MBR dengan hanya menghemat ukuran blok yang sama dengan ukuran bootstrap.

# dd if=/dev/sda of=/tmp/sdambr2.img bs=446 count=1

c. Memulihkan MBR dari gambar MBR

Anda dapat memulihkan MBR Anda seperti yang ditunjukkan pada perintah sebelumnya dengan

# dd if=/tmp/sdambr.img of=/dev/sda

3. Mengonversi format data

Jika file input menggunakan kumpulan karakter yang bukan kumpulan karakter asli dari komputer host, operator impor harus melakukan konversi. Misalnya, jika ASCII adalah format asli untuk string di komputer host Anda, tetapi file data input mewakili string menggunakan EBCDIC, Anda harus mengonversi EBCDIC ke ASCII dan sebaliknya.

a. Konversi format data file dari EBCDIC ke ASCII

Jika ada file ebcdic dengan Anda, sebagian besar diambil dari sistem mainframe, maka, Anda ingin mengonversinya ke ASCII untuk membuat modifikasi menggunakan editor teks di server UNIX

# dd if=textfile.ebcdic of=textfile.ascii conv=ascii

conv parameter nilai sekarang adalah ascii karena kami mengonversi dari EBCDIC ke ASCII

b. Konversi format data file dari ASCII ke EBCDIC

Setelah memodifikasi versi ASCII dan setelah selesai, Anda dapat mengonversinya kembali ke EBCDIC untuk digunakan oleh aplikasi Anda.

# dd if=textfile.ascii of=textfile.ebcdic conv=ebcdic

conv parameter nilai sekarang adalah e bcdic karena kita mengkonversi dari ASCII ke EBCDIC. Jika Anda hanya mengganti jumlah byte tertentu dengan jumlah byte yang setara yang memiliki karakter berbeda, konversi akan lancar dan aplikasi membaca file tidak akan mengalami masalah.

4. Mengonversi kasus file

Perintah DD juga dapat digunakan untuk hal yang luar biasa. Itu dapat mengonversi semua teks (abjad) dalam file ke huruf besar atau kecil dan sebaliknya. Untuk contoh di bawah ini, kami akan memiliki file untuk pengujian.

# cat file10
test dd convert

a. Mengonversi file menjadi huruf besar

Karena contoh file teks kita menggunakan huruf kecil, kita akan mengubahnya menjadi huruf besar

# dd if=~/file10 of=~/file20 conv=ucase

Perintah tersebut akan membuat file baru yang ditunjukkan. Lihat sekarang conv opsi membutuhkan ucase nilai. Yuk cek hasilnya

# cat file20 
TEST DD CONVERT

b. Mengonversi file menjadi huruf kecil

Sekarang kita akan melakukan operasi kebalikan yang akan diubah menjadi huruf kecil

# dd if=~/file20 of=~/file30 conv=lcase

Lihat bahwa kami menggunakan lcase  dari conv opsi untuk mengonversi dari huruf besar ke huruf kecil.

# cat file30 
test dd convert

Perintah dd tidak mengonversi nama file, hanya isinya.

Kesimpulan

Perintah dd, meskipun secara teknis bukan perintah pengarsipan, dalam beberapa hal serupa karena dapat menyalin seluruh partisi atau disk ke dalam file dan sebaliknya.


Linux
  1. Perintah Tee Linux dengan Contoh

  2. Perintah kepala Linux dengan Contoh

  3. Perintah JQ di Linux dengan Contoh

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah Echo di Linux (Dengan Contoh)

  1. Perintah man di Linux dengan Contoh

  2. Perintah AWK di Linux dengan Contoh

  3. Perintah Curl di Linux dengan Contoh