ডিডি কন = সিঙ্ক, নেরার কী করে?


39

সুতরাং conv=sync,noerrorকোনও ইমেজ ফাইলে একটি সম্পূর্ণ হার্ড ডিস্ক ব্যাক আপ করার সময় যুক্ত করার পরে কোনও পার্থক্য আসে কি? conv=sync,noerrorফরেনসিক স্টাফ করার সময় কি কোনও প্রয়োজন? যদি তাই হয় তবে লিনাক্স ফেডোরার ক্ষেত্রে কেন এটি ঘটবে?

সম্পাদনা:

ঠিক আছে, তাই যদি আমি ডিডি না করে থাকি conv=sync,noerrorএবং ddব্লকটি পড়ার সময় ত্রুটির মুখোমুখি হয় (আসুন আকারটি 100 এম), ডিডি কি কেবল 100 এম ব্লকটি এড়িয়ে যায় এবং কিছু না লিখে পরের ব্লকটি পড়ে ( dd conv=sync,noerror100 মিটার আউটপুটে জিরো লিখে - তাই এই ক্ষেত্রে কী হবে? ?)?

এবং যদি অরিজিনাল হার্ডডিস্কের হ্যাশ এবং আউটপুট ফাইলটি আলাদা করে করা হয় তবে conv=sync,noerror? নাকি এটি কেবল যখন পড়ার ত্রুটি ঘটেছে?


3
প্রশ্নের জন্য ভোট দিন "যখন ফরেনসিক স্টাফ করছেন পরিবর্তনের = সিঙ্ক, noerror প্রয়োজন আছে কি?"
nergeia

উত্তর:


46

conv=syncddপ্রতিটি ব্লককে নাল দিয়ে বাম দিকে প্যাড করতে বলে , যাতে ত্রুটির কারণে পুরো ব্লকটি পড়তে না পারলে মূল ডেটার পুরো দৈর্ঘ্য সংরক্ষণ করা হয়, যদিও সমস্ত তথ্যই চিত্রটিতে অন্তর্ভুক্ত করা যায় না । এই উপায়ে আপনি কীভাবে ডেটা ক্ষতিগ্রস্ত হয়েছে তা জানেন, যা আপনাকে ফরেনসিক ক্লু সরবরাহ করতে পারে এবং যদি আপনি খারাপ ব্লক বা যে কোনও কারণে কোনও চিত্র নিতে না পারেন তবে আপনি কোনও ডেটা বিশ্লেষণ করতে পারবেন না। কিছু কারও চেয়ে ভাল।

conv=sync,noerrorddত্রুটি বন্ধ এবং ডাম্প সঞ্চালন থেকে রোধ করা প্রয়োজন । conv=syncনোরার ছাড়াই মূলত অর্থহীন।

http://linuxcommand.org/man_pages/dd1.html

http://vlinux-freak.blogspot.com/2011/01/how-to-use-dd-command.html


1
প্রশ্ন: যদি কেউ কনড = সিঙ্ক ব্যতীত ডিডি না করে তবে নোরার হার্ড ডিস্ক এবং ইমেজ ফাইলের হ্যাশ আলাদা হয়ে যায়?
শে

এছাড়াও যদি ডিডি ত্রুটি পড়ার মুখোমুখি হয়, তবে তা কি সেই মুহুর্তে থামবে?
dding

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

এই প্রশ্নের একমাত্র উত্তর হওয়ার জন্য উত্সাহিত হয়েছে যা প্রশ্নের স্পষ্টভাবে উত্তর দেয় তবে আপনি অন্যান্য উত্তরটির উপসংহারটি সম্পর্কে কী ভাবেন যে এটি আসলে ব্যাকআপটিকে দূষিত করে? আপনার দুটি উত্তর একে অপরের বিরোধিতা বলে মনে হচ্ছে তবে আমি ভুল বোঝাবুঝি করছি।
হাশিম

36

dd conv=sync,noerror(বা conv=noerror,sync) আপনার ডেটা দূষিত করে।

আই / ও ত্রুটির মুখোমুখি হওয়া এবং ব্লকসাইজ ব্যবহার করা (শারীরিক সেক্টরের আকারের চেয়ে বড়?) উপর নির্ভর করে ইনপুট এবং আউটপুট ঠিকানাগুলি আসলে সিঙ্কে থাকে না তবে ভুল অফসেটে শেষ হয়, যা অনুলিপিটিকে ফাইল সিস্টেম চিত্র এবং অন্যান্য জন্য অকেজো করে তোলে makes অফসেটের বিষয়গুলি এমন জিনিস।

conv=noerror,syncখারাপ ডিস্কগুলির সাথে কাজ করার সময় অনেকগুলি জায়গা ব্যবহার করার পরামর্শ দেয় । আমি একই সুপারিশ করতাম, নিজেও। এটি আমার পক্ষে কাজ করেছিল, যখন আমাকে কিছুক্ষণ আগে একটি খারাপ ডিস্ক পুনরুদ্ধার করতে হয়েছিল।

যাইহোক, পরীক্ষার পরামর্শ দেয় যে এটি আসলে কোনওভাবেই নির্ভরযোগ্য নয়।

একটি ডিভাইস ব্যবহার করুন losetupএবং dmsetupতৈরি করতে A error B:

truncate -s 1M a.img b.img
A=$(losetup --find --show a.img)
B=$(losetup --find --show b.img)
i=0 ; while printf "A%06d\n" $i ; do i=$((i+1)) ; done > $A
i=0 ; while printf "B%06d\n" $i ; do i=$((i+1)) ; done > $B

এ, বি লুপ ডিভাইসগুলি দেখতে দেখতে:

# head -n 3 $A $B
==> /dev/loop0 <==
A000000
A000001
A000002

==> /dev/loop1 <==
B000000
B000001
B000002

সুতরাং এটি বর্ধমান সংখ্যা সহ এটি, বি, যা পরে অফসেটগুলি যাচাই করতে আমাদের সহায়তা করবে।

এখন লিনাক্স ডিভাইস ম্যাপার সৌজন্যে দুজনের মধ্যে পঠন ত্রুটি স্থাপন করতে:

# dmsetup create AerrorB << EOF
0 2000 linear $A 0
2000 96 error
2096 2000 linear $B 48
EOF

এই উদাহরণটি সেক্টরের AerrorBহিসাবে তৈরি করে , ত্রুটির ক্ষেত্রগুলি অনুসরণ করে, এর পরে সেক্টরগুলি তৈরি করে ।2000A2*482000B

কেবল যাচাই করতে:

# blockdev --getsz /dev/mapper/AerrorB
4096
# hexdump -C /dev/mapper/AerrorB
00000000  41 30 30 30 30 30 30 0a  41 30 30 30 30 30 31 0a  |A000000.A000001.|
00000010  41 30 30 30 30 30 32 0a  41 30 30 30 30 30 33 0a  |A000002.A000003.|
[...]
000f9fe0  41 31 32 37 39 39 36 0a  41 31 32 37 39 39 37 0a  |A127996.A127997.|
000f9ff0  41 31 32 37 39 39 38 0a  41 31 32 37 39 39 39 0a  |A127998.A127999.|
000fa000
hexdump: /dev/mapper/AerrorB: Input/output error

সুতরাং এটি অবধি পড়া যায় A127999\n, যেহেতু প্রতিটি লাইনে 8 বাইট রয়েছে যা মোট 1024000 বাইট যা আমাদের 2000 সেক্টর 512 বাইট। সবকিছু ঠিকঠাক মনে হচ্ছে ...

এটা মিশান হবে?

for bs in 1M 64K 16K 4K 512 42
do
    dd bs=$bs conv=noerror,sync if=/dev/mapper/AerrorB of=AerrorB.$bs.gnu-dd
    busybox dd bs=$bs conv=noerror,sync if=/dev/mapper/AerrorB of=AerrorB.$bs.bb-dd
done

ddrescue /dev/mapper/AerrorB AerrorB.ddrescue

ফলাফল:

# ls -l
-rw-r--r-- 1 root root 2113536 May 11 23:54 AerrorB.16K.bb-dd
-rw-r--r-- 1 root root 2064384 May 11 23:54 AerrorB.16K.gnu-dd
-rw-r--r-- 1 root root 3145728 May 11 23:54 AerrorB.1M.bb-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.1M.gnu-dd
-rw-r--r-- 1 root root 2097186 May 11 23:54 AerrorB.42.bb-dd
-rw-r--r-- 1 root root 2048004 May 11 23:54 AerrorB.42.gnu-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.4K.bb-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.4K.gnu-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.512.bb-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.512.gnu-dd
-rw-r--r-- 1 root root 2162688 May 11 23:54 AerrorB.64K.bb-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.64K.gnu-dd
-rw-r--r-- 1 root root 2097152 May 11 23:54 AerrorB.ddrescue

ফাইলের আকার থেকে একাই আপনি বলতে পারবেন কিছু ব্লক আকারের জন্য জিনিসগুলি ভুল।

চেকসাম:

# md5sum *
8972776e4bd29eb5a55aa4d1eb3b8a43  AerrorB.16K.bb-dd
4ee0b656ff9be862a7e96d37a2ebdeb0  AerrorB.16K.gnu-dd
7874ef3fe3426436f19ffa0635a53f63  AerrorB.1M.bb-dd
6f60e9d5ec06eb7721dbfddaaa625473  AerrorB.1M.gnu-dd
94abec9a526553c5aa063b0c917d8e8f  AerrorB.42.bb-dd
1413c824cd090cba5c33b2d7de330339  AerrorB.42.gnu-dd
b381efd87f17354cfb121dae49e3487a  AerrorB.4K.bb-dd
b381efd87f17354cfb121dae49e3487a  AerrorB.4K.gnu-dd
b381efd87f17354cfb121dae49e3487a  AerrorB.512.bb-dd
b381efd87f17354cfb121dae49e3487a  AerrorB.512.gnu-dd
3c101af5623fe8c6f3d764631582a18e  AerrorB.64K.bb-dd
6f60e9d5ec06eb7721dbfddaaa625473  AerrorB.64K.gnu-dd
b381efd87f17354cfb121dae49e3487a  AerrorB.ddrescue

ddddrescueশুধুমাত্র ত্রুটিযুক্ত আকারের জন্য আমাদের ত্রুটি অঞ্চলে ( 512, 4K) প্রান্তিককরণের সাথে একমত হয় ।

আসুন কাঁচা তথ্য পরীক্ষা করে দেখুন।

# grep -a -b --only-matching B130000 *
AerrorB.16K.bb-dd:  2096768:B130000
AerrorB.16K.gnu-dd: 2047616:B130000
AerrorB.1M.bb-dd:   2113152:B130000
AerrorB.1M.gnu-dd:  2064000:B130000
AerrorB.42.bb-dd:   2088578:B130000
AerrorB.42.gnu-dd:  2039426:B130000
AerrorB.4K.bb-dd:   2088576:B130000
AerrorB.4K.gnu-dd:  2088576:B130000
AerrorB.512.bb-dd:  2088576:B130000
AerrorB.512.gnu-dd: 2088576:B130000
AerrorB.64K.bb-dd:  2113152:B130000
AerrorB.64K.gnu-dd: 2064000:B130000
AerrorB.ddrescue:   2088576:B130000

যদিও ডেটা নিজেই উপস্থিত রয়েছে বলে মনে হচ্ছে, এটি সুসংগত নয়; অফসেটগুলি বিএস = 16 কে, 1 এম, 42,64 কে জন্য পুরোপুরি ধাক্কা খেয়েছে ... 2088576আসল ডিভাইসের বিপরীতে যাচাই করা যেতে পারে কেবল অফসেটযুক্ত তারা সঠিক।

# dd bs=1 skip=2088576 count=8 if=/dev/mapper/AerrorB 
B130000

এই প্রত্যাশিত আচরণ কি dd conv=noerror,sync? আমি জানি না এবং ddআমার যে দুটি বাস্তবায়ন উপলব্ধ ছিল তা একে অপরের সাথে একমতও হয় না। আপনি যদি ddপারফর্মেন্ট ব্লকসাইজ পছন্দ ব্যবহার করেন তবে ফলাফলটি খুব অকেজো ।

উপরে ব্যবহার করে উত্পাদিত হয় dd (coreutils) 8.25, BusyBox v1.24.2, GNU ddrescue 1.21


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

@ ফ্রস্টসচুটজ খারাপ সেক্টর সহ ড্রাইভ নিয়ে কাজ করার ddrescueপরিবর্তে আপনি কি ব্যবহারের পরামর্শ দিবেন dd?
ljk

2
না; syncযুক্তি বলা হয়েছে যে সব আউটপুট সঠিক দৈর্ঘ্য রাখা। আপনি যদি ভুল ব্লকের আকার ব্যবহার করেন তবে এটি কাজ করে না, তাই কেবল এটি করবেন না।
psusi

12
আরে, iflag=fullblockএটি সংরক্ষণ করা মনে হচ্ছে। যদিও md5sumএর সাথে তৈরি ছবিগুলির iflag=fullblockএখনও পৃথক রয়েছে (অবশ্যই! কারণ পড়ার ত্রুটির কারণে এড়িয়ে যাওয়া সংখ্যাগুলির বাইটগুলি পৃথক হয়ে যায় - অর্থাত্ \0চিত্রগুলিতে এর পরিমাণগুলি পৃথক হয়), তবে প্রান্তিককরণটি সংরক্ষণ করা হয় iflag=fullblock: সমস্ত চিত্রের জন্য grep -a -b --only-matching B130000প্রত্যাবর্তন 2088576
সাশা

3
@ সাশা ঠিক আছে এবং আরও উন্নত প্রয়োজন! ফুল ব্লকটি gnu.org/software/coreutils/manual/html_node/dd-invocation.html
মল্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.