= / Dev / শূন্যের = / dev / sda` করলে `dd কী করে


19

সম্পাদিত: আপনি ডেটা ধ্বংস করতে না চাইলে এটি পরীক্ষা করার জন্য এটি চালাবেন না।

আমি কী পেয়েছি কেউ বুঝতে সাহায্য করতে পারে?

  1. dd if=/dev/zero of=/dev/sda bs=4096 count=4096

    প্রশ্ন: কেন 4096 বিশেষত count?

  2. dd if=/dev/zero of=/dev/sda bs=512 count=4096 seek=$(expr blockdev --getsz /dev/sda - 4096)

    প্রশ্ন: এটি ঠিক কী করে?


4
আপনি এই দূষিত কোডটি কোথায়
পেয়েছেন

10
এটি দূষিত কোড নয়।
মাইকেল হ্যাম্পটন

12
@ মিশেলহ্যাম্পটন: এস / দূষিত / ধ্বংসাত্মক / যখন ধ্বংসাত্মক কোড পোস্ট করা সেকেন্ডে দূষিত নয়, তবে এটি স্পষ্ট সতর্কতা ছাড়াই পোস্ট করে যে এটি ডেটা আইএস নষ্ট করতে পারে।
বেন ভয়েগট

1
ইন্টারনেটে যখন কেউ আপনাকে এভাবে একটি কমান্ড চালাতে বলে দেয় তখন ডিডিকে 'ডিস্ক ডিস্ট্রোয়ার' হিসাবে ভাবা ভাল।
ববি সাকামানো

3
আসলে ডিডি মানে ডেটা বর্ননা
সুচি ডোগা

উত্তর:


43

ডিডি যদি = / দেব / শূন্যের = / দেব / এসডিএ বিএস = 4096 গণনা = 4096 প্রশ্ন: 4096 কেন বিশেষভাবে কাউন্টারের জন্য ব্যবহৃত হয়?

এটি ড্রাইভের প্রথম 16 এমআইবি শূন্য করবে। 16 এমআইবি সম্ভবত কোনও "ডিস্কের শুরু" কাঠামোকে ছোট করার জন্য পর্যাপ্ত পরিমাণের চেয়ে বেশি তবে এটি খুব বেশি সময় নেয় না।

ডিডি যদি = / দেব / শূন্যের = / দেব / এসডিএ বিএস = 512 গণনা = 4096 সিক = $ (এক্সট্রা ব্লকদেব --getsz / দেব / এসডিএ - 4096)

প্রশ্ন: এটি ঠিক কী করে?

blockdev --getsz"512 বাইট সেক্টর" এ ব্লক ডিভাইসের আকার পায়। সুতরাং এই কমান্ডটি দেখে মনে হচ্ছে এটি ড্রাইভের শেষ 2 এমআইবি শূন্যের উদ্দেশ্যে করা হয়েছিল।

দুর্ভাগ্যক্রমে এই কমান্ডটি সিনট্যাক্স অনুযায়ী ভাঙ্গা। আমি আশা করি কমান্ডটি মূলত উদ্দিষ্ট ছিল

dd if=/dev/zero of=/dev/sda bs=512 count=4096 seek=$(expr `blockdev --getsz /dev/sda` - 4096)

এবং ব্যাকটিকগুলি লোকেদের নকল / বিভিন্ন পরিবেশের মধ্যে পেস্ট করার লাইন ধরে কোথাও হারিয়ে গেছে got

পুরানো পার্টিশন টেবিল, এলভিএম মেটাডেটা, রাইড মেটাডেটা ইত্যাদি কোনও ড্রাইভ পুনরায় ব্যবহার করার সময় সমস্যা দেখা দিতে পারে। পুরো ড্রাইভ শূন্যের চেয়ে অনেক দ্রুত হওয়ার সাথে সাথে ড্রাইভের শুরু এবং শেষে বিভাগগুলি জিরোয়িং করা সাধারণত এই সমস্যাগুলি এড়াতে পারে।


4
ধন্যবাদ. এই উত্তরটি আমার সন্ধানের জন্য সবচেয়ে বেশি দেখা যাচ্ছে বলে মনে হচ্ছে। দুটি কমান্ড ডেলপার্টের পরে ব্যবহৃত হয়। এগুলি পরিষ্কার হিসাবে পুনরায় ব্যবহারের জন্য একটি ডিস্ক মুছতে ব্যবহার করা হয়।
জেএইচ

expr blockdev --getsz /dev/sda - 4096এর সিনট্যাক্স ত্রুটি হবে expr। আমি মনে করি উদ্দেশ্যযুক্ত আদেশ ছিল ...seek="$(expr "$(blockdev --getsz /dev/sda)" - 4096)"। বা আরও ভাল:...seek="$(($(blockdev --getsz /dev/sda) - 4096))"
স্টাফেন চেজেলাস

1
আমার অনুমানটি হ'ল কমান্ডটিতে মূলত ব্যাকটিকস ছিল এবং তারা কোনও সময়ে খেয়ে ফেলেছিল।
প্লাগওয়াশ

16

এটি আপনার হার্ড ড্রাইভের প্রথম 4096*4096=16MBএবং শেষটি 512*4096=2MBমুছবে, যা পুনরুদ্ধারের জন্য দরকারী গুরুত্বপূর্ণ কাঠামো ধারণ করে। আমি ধরে নিই এই কোডটি দূষিতভাবে পোস্ট করা হয়েছিল।

আমি কখনই এমন পরিস্থিতির মুখোমুখি হইনি যেখানে স্পষ্টভাবে countঅন্যটি নির্দিষ্ট করার 1জন্য কার্যকর ছিল। আমি যদি এমবিআরের কোনও চিহ্ন ফেলে রাখি না তা নিশ্চিত করতে চাইলে আমি প্রথম ব্লকটি মুছে ফেলেছি ...


8
এটি খারাপভাবে দূষিত নয়, আমার কিছু খারাপ ফর্ম্যাটিং প্রোগ্রাম রয়েছে যেগুলি যদি বর্তমানের ক্ষতিগ্রস্থ হয় তবে একটি নতুন লেবেল লিখতে অস্বীকার করেছে এবং তাই প্রথম কয়েকটি বাইট নিজেই শূন্য করতে হয়েছিল।
শেলভাকু

1
@ শেলভাচু যদি ড্রাইভটি এভাবে চালিত করে থাকে তবে আমি অবাক হব sda। আরও সম্ভবত sdbবা sdc। তবে আমি অবশ্যই ভুল হতে পারি ...
yo '

7
এটি দূষিত নয়। এটি ডিস্কের শুরুতে জিপিটি এবং ডিস্কের শেষে জিপিটি মুছে ফেলে।
মাইকেল হ্যাম্পটন

2
@ শেলভাকু: এটি ধ্বংসাত্মক। এটি কী করে তার ব্যাখ্যা ছাড়াই যদি ধ্বংসাত্মক কমান্ড পোস্ট করা হয় তবে এটি দূষিত। যদি তাদের সাথে কোনও ব্যাখ্যা উপস্থিত থাকে তবে ওপি এখানে কেন এটি সম্পর্কে জিজ্ঞাসা করছে?
বেন ভয়েগট

2
তাহলে কে, এর নিখুঁত মনে, কোডগুলি তার উদ্দেশ্য না জেনে কোথাও পাওয়া যাবে অনুলিপি / পেস্ট করবে? দূষিত নয় কারণ আমি পাতাল রেলগুলিতে পাওয়া কোনও অদ্ভুত ডিভাইসকে কাঁপব না।
ম্যাগনো সি

4

এই কমান্ডগুলি জেরো সহ আপনার এসডিএ ডিভাইসটিকে ওভাররাইট করবে - প্রথমটি প্রথম 16MB করবে (4096 ব্লকের আকার এবং 4096 ব্লকের গণনা) এবং দ্বিতীয়টিটি শেষ 2MB (4096 ব্লক সহ 512 ব্লকের আকার) শূন্যগুলি দিয়ে ওভাররাইট করবে। (এটি প্রযুক্তিগতভাবে মুছে ফেলা হচ্ছে না এবং এটি নীচে আমার প্রথম বিষয়টির সাথে সম্পর্কিত tes)

(অন্যান্য অংশে এটি ইতিমধ্যে উল্লিখিত অংশ ছিল, সম্পূর্ণতার জন্য এটি সহ)

আরেকটি বিষয় যা উল্লেখযোগ্য তা হ'ল ব্লকের আকারের প্রভাব রয়েছে তবে সেগুলি কেবলমাত্র উচ্চ-ভলিউম ক্রিয়াকলাপে দেখা যায়। কমান্ডটি কার্যকর করার সবচেয়ে কার্যকর (দ্রুততম) উপায় হ'ল কমান্ডের ব্লক আকারটি যদি ডিভাইসের অ্যাক্সেস আকারের সাথে মেলে, অন্যথায় সময় নষ্ট হয়।

আপনি যদি আগ্রহী হন তবে আপনি মিলিয়ন 1-ব্লক খণ্ডের সাথে একটি ফাইল এবং 1 মিলিয়ন ব্লক অংশগুলি সহ একটি ফাইল তৈরি করতে চেষ্টা করতে পারেন এবং পার্থক্যটি দেখতে পারেন:

[user@host tmp]$ time dd if=/dev/zero of=/tmp/test1 bs=1 count=1000000
1000000+0 records in
1000000+0 records out
1000000 bytes (1.0 MB) copied, 2.44439 s, 409 kB/s

real    0m2.447s
user    0m0.177s
sys     0m2.269s
[user@host tmp]$ time dd if=/dev/zero of=/tmp/test2 bs=1000000 count=1
1+0 records in
1+0 records out
1000000 bytes (1.0 MB) copied, 0.00155357 s, 644 MB/s

real    0m0.003s
user    0m0.001s
sys     0m0.002s
[user@host tmp]$ ls -al test*
-rw-rw---- 1 user grp 1000000 Apr  8 15:51 test1
-rw-rw---- 1 user grp 1000000 Apr  8 15:51 test2

আপনি দেখতে পাচ্ছেন যে ব্লকসাইজে দক্ষতার উপর ব্যাপক প্রভাব পড়ে। এটি সম্ভবত ওপিটির একটি সাইডবার, তবে আমি মনে করি এটি এখনও প্রাসঙ্গিক।

টিএল; ডিআর: নেট থেকে পাওয়া স্বেচ্ছাসেবক কোডটি চালাবেন না বা আপনি বিশ্বাস করেন না এমন কেউ আপনাকে দেয়। এটা আপনার দিন নষ্ট করবে।


7
Don't execute arbitrary code you find on the netলাইনের জন্য +1
সের্গেই কলডিয়াজহনি

7
"নোট করুন যে এই প্রক্রিয়াটি অত্যন্ত ক্লান্তিকর এবং / বা ব্যয়বহুল এবং অত্যন্ত নির্দিষ্ট সরঞ্জামের প্রয়োজন requires" এই ভুল তথ্য ছড়িয়ে দেওয়া বন্ধ করুন। সর্বশেষ সময়টি তাত্ত্বিকভাবে সম্ভব হয়েছিল কয়েক দশক আগে প্রযুক্তিতে যা এখন অনেক প্রজন্ম অপ্রচলিত। পুরস্কারের অর্থ দিয়ে জনসাধারণের চ্যালেঞ্জের প্রতিক্রিয়া হিসাবে, আধুনিক ড্রাইভগুলিতে কেউ এই ধরণের পুনরুদ্ধার কখনও দেখায়নি
অ্যান্ড্রু মেডিকো

আমি সেই বিভাগটি সরিয়ে দিয়েছি - অনুমান করুন যে আমি এটি সম্পর্কে প্রথম শুনি while তবে আমি বলব, "তাত্ত্বিকভাবে" অপারেটিভ শব্দ ছিল, তবে আমি ডিগ্রি করি।
টিম এস

2

অন্যরা তাদের কী ব্যাখ্যা করেছে তাই আমি এড়িয়ে যাব।

পয়েন্ট ddপৃথক থাকার bsএবং countযুক্তি যে bsনিয়ন্ত্রণগুলি কত লেখা আছে একটি সময়ে । এর জন্য প্রকৃতপক্ষে বড় মান নির্ধারণের জন্য bsপ্রোগ্রামে সত্যই বড় বাফার প্রয়োজন হবে এবং ডিভাইসের ব্লকের আকারের চেয়ে কম মান উল্লেখ করা ধীর হবে কারণ কার্নেলটিকে ডিভাইসে লেখার জন্য একটি সম্পূর্ণ ব্লক তৈরি করতে হবে (এটির মতো ক্ষেত্রে এটি করতে পারে) একটি সম্পূর্ণ ব্লক না হওয়া পর্যন্ত সম্ভবত লেখকদের বাফার করুন, অন্যান্য ক্ষেত্রে এটি ডিস্কে ইতিমধ্যে কী পড়তে হবে)। যেহেতু দুটি কমান্ডের জন্য বিভিন্ন মান ব্যবহৃত হয় bs, এটি আমাকে ভাবতে পরিচালিত করে যে আপনি এটি দুটি পৃথক সাইটে খুঁজে পেতে পারেন। হার্ড ডিস্কগুলির সাথে সম্পর্কিত 512 বাইটের একটি ব্লক আকার ছিলbs=512পরবর্তী কমান্ডটি, তবে কিছু (6-8 আমার মনে হয়) বছর আগে তারা 4096 বাইটের একটি ব্লক আকারের সাথে bs=4096আধুনিক ডিস্কগুলির জন্য আরও ভাল পছন্দ করে ডিস্ক তৈরি শুরু করে।


1
এর জন্য মিষ্টি স্পট bsতার চেয়ে অনেক বেশি । একক Sata কমান্ড একাধিক সেক্টর পড়তে বা লিখতে পারে, তাই কার্নেলটি প্রেরণের আগে I / Os একত্রিত করে। যে কোন জায়গা থেকে bs=64kকরতে bs=1024kযুক্তিযুক্ত (L3 ক্যাশে, চিহ্নিত আকার প্রায়ই 4-8MiB যায়)। আমি প্রায়শই ব্যবহার করি bs=128kযা আধুনিক ইন্টেল সিপিইউতে L2 ক্যাশে আকারের অর্ধেক। ( ddদুটি মেম্পি অপারেশন রয়েছে: read(2)উত্স থেকে (এমনকি এটি / ডিভ / শূন্য)) এবং write(2)আইআইআরসি- sddতে শূন্য লেখার বিকল্প ছিল, যা কিছুটা সিপিইউ সময় সাশ্রয় করবে। ডিস্ক ব্যতীত)
পিটার কর্ডেস

I / O অনুরোধটি মার্জ হয়ে যাওয়া দেখতে, আউটপুট iostat -x 4বা অন্য কিছুর দিকে নজর দিন এবং rrqm / s (প্রতি সেকেন্ডে পড়ুন-অনুরোধগুলি) এবং রিকিএম / এস কলামগুলি নোট করুন।
পিটার কর্ডেস

1

সতর্কতা: dd if=/dev/zero of=/dev/ ফরেন্সিকভাবে ডেটা অনুলিপি করার আগে একটি ড্রাইভ বা ডিভাইস পরিষ্কার করতে ব্যবহৃত হয়। ক্রস দূষণ প্রশমিত করতে ফরেনসিক তদন্তের অধীনে কোনও সিস্টেমের তথ্য অনুলিপি করার আগে ড্রাইভ বা ডিভাইসটি সর্বদা স্যানিটাইজ করতে হবে। সুতরাং এটি কোনও খারাপ আদেশ নয়, শেষ ব্যবহারকারীর বুঝতে হবে এটির জন্য কী ব্যবহার করা হয় বা তারা তাদের ডেটা নষ্ট করে দেবে। আপনি যদি এটি চান তবে শূন্য রাইটিং অপারেশন যাচাই করুন dd if=/dev/sda | hexdump -C | head

উত্স: ডঃ ড্যারেন হেইস দ্বারা কম্পিউটার ফরেনসিক তদন্তের একটি ব্যবহারিক গাইড


1

আমি dd if=/dev/zero of=/dev/sdX oflag=syncinোকানো ইউএসবি ড্রাইভ বা মাইক্রোএসডি কার্ডের মান পরীক্ষা করার আগে আমি আসলে এটি জিপিআর্টেড, এফডিস্ক, বা ডিসি ডিস্কের সাহায্যে ডিডি ব্যবহার করি। আমি মনে করি এটি একটি বিচক্ষণ ধারণা, বিশেষত মাইক্রোএসডি মিডিয়াগুলির সাথে, যা মানের একটি খারাপ ইতিহাস রয়েছে।

অবশ্যই, = এসডিএক্স এর সাথে সাবধানতা অবলম্বন করুন কারণ কোনও দুর্ঘটনাযুক্ত ডিস্ক মুছার সাথে কোনও ক্ষমা নেই। লক্ষ্যযুক্ত যে এক্স = ড্রাইভ চিঠিটি যাচাই করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.