سؤال

الطريقة الأكثر شيوعًا لإتلاف الملفات المضغوطة هي إجراء نقل FTP في وضع ASCII عن غير قصد، مما يتسبب في نقل أحرف CR و/أو LF إلى سلة المهملات.

من الواضح أن هناك فقدانًا للمعلومات، وأفضل طريقة لإصلاح هذه المشكلة هي النقل مرة أخرى في وضع FTP الثنائي.

ومع ذلك، إذا فقدت النسخة الأصلية، وهو أمر مهم، ما مدى إمكانية استرداد البيانات؟

[في الواقع، أعرف بالفعل ما أعتقد أنه أفضل إجابة (إنه أمر صعب جدًا ولكنه ممكن في بعض الأحيان - سأقوم بنشر المزيد لاحقًا)، والإجابات غير الشائعة (الكثير من البرامج الجاهزة لإصلاح CRC دون إصلاح البيانات )، لكنني أعتقد أنه سيكون من المثير للاهتمام تجربة هذا السؤال أثناء الفترة التجريبية لتدفق المكدس، ومعرفة ما إذا كان أي شخص آخر قد سلك مسار الاسترداد الناجح أو اكتشف أدوات لا أعرف عنها شيئًا.]

هل كانت مفيدة؟

المحلول

من برامج بوكيس

من المعروف أن حوالي 1 في 256 بايت تالفة ، ومن المعروف أن الفساد يحدث فقط في بايت مع القيمة " 012".وبالتالي فإن معدل خطأ البايت هو 1/256 (0.39 ٪ من المدخلات) ، و 2/256 بايت (0.78 ٪ من المدخلات) مشبوهة.ولكن نظرًا لأن ثلاثة بتات فقط لكل بايت محطمة تتأثر ، فإن معدل خطأ البت هو 3/(256*8):0.15 ٪ سيئة ، 0.29 ٪ هو المشبوهة.

...

يعطل الخطأ في المدخلات المضغوطة عملية إلغاء الضغط لجميع البايتات اللاحقة ... حقيقة أن الإخراج المضغوط أمرًا سيئًا بشكل ملحوظ بهذه السرعة هو سبب الأمل - يمكن للبحث عن الإجابة الصحيحة تحديد الإجابات الخاطئة بسرعة.

في النهاية ، تم الجمع بين العديد من التقنيات لاستخراج بيانات معقولة بنجاح من هذه الملفات:

  • تحليل خاص بالمجال للحقول والسلاسل المقتبسة
  • التعلم الآلي من البيانات السابقة مع احتمالية منخفضة للضرر
  • التسامح مع تلف الملف لأسباب أخرى (على سبيل المثال.القرص ممتلئ أثناء التسجيل)
  • Lookahead لتوجيه البحث على طول المسارات ذات الاحتمالية الأعلى

تحدد هذه التقنيات 75 ٪ من الإصلاحات اللازمة على وجه اليقين ، ويتم استكشاف الباقي على أعلى مستوى-حتى يتم تحديد عمليات إعادة البناء المعقولة على الفور.

نصائح أخرى

يمكنك محاولة كتابة برنامج نصي صغير لاستبدال جميع CRs بـ CRLFs (بافتراض أن اتجاه النقل إلى المهملات كان CRLF إلى CR)، مع تبديلها عشوائيًا لكل كتلة حتى تحصل على CRC الصحيح.بافتراض أن البيانات لم تكن كبيرة بشكل خاص، أعتقد أن ذلك قد لا يستخدم كل وحدة المعالجة المركزية الخاصة بك حتى يكتمل الموت الحراري للكون.

نظرًا لوجود فقدان واضح للمعلومات، لا أعلم أن هناك طريقة أفضل.قد يكون من الأسهل قليلاً التراجع عن الخسارة في اتجاه CR إلى CRLF.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top