ডিরেক্টরিতে সমস্ত ফাইলের জন্য এমডি 5 চেকসাম তৈরি করুন


75

আমি ডিরেক্টরিতে সমস্ত ফাইলের জন্য একটি এমডি 5 চেকসাম তালিকা তৈরি করতে চাই।

আমি চাই cat filename | md5sum > ouptput.txt। আমি আমার ডিরেক্টরিতে সমস্ত ফাইলের জন্য 1 ধাপে এটি করতে চাই।

কোন সহায়তা দুর্দান্ত হবে।


একটি নির্দিষ্ট ব্যাকআপ ফাইলের এমডি 5সাম (চেকসাম) কীভাবে খুঁজে পাব? -আমার স্ক্রিপ্টটি কেমন দেখতে হবে

উত্তর:


110

আপনি md5sumএকাধিক ফাইলের নাম বা ব্যাশ বিস্তৃত করতে পারেন :

$ md5sum * > checklist.chk  # generates a list of checksums for any file that matches *
$ md5sum -c checklist.chk   # runs through the list to check them
cron: OK
database.sqlite3: OK
fabfile.py: OK
fabfile.pyc: OK
manage.py: OK
nginx.conf: OK
uwsgi.ini: OK

যদি আপনি অভিনবতা পেতে চান তবে আপনি findফাইলগুলি ড্রিল এবং ফিল্টার করার পাশাপাশি পুনরাবৃত্তভাবে কাজ করার মতো জিনিসগুলি ব্যবহার করতে পারেন :

find -type f -exec md5sum "{}" + > checklist.chk

1
♦ কিভাবে পাবার জন্য উপরে ব্যবহার করতে md5sumসাব ডিরেক্টরি ভিতরে ফাইল, উপরে md5sum *বলার অপেক্ষা রাখে না ... দ্বারা সাব স্তর মধ্যে যাওয়া emitting একটি ডিরেক্টরি হয়
Kasun Siyambalapitiya

দৌড়ে জিজ্ঞাসা করার জন্য দুঃখিত find -type f -exec md5sum '{}' +এবং `সন্ধান করুন-টাইপ f -exec md5sum '{}'` আমি এটি পেতে সক্ষম হয়েছি। ধন্যবাদ :)
কাসুন সায়াম্বলপিতীয়া

: আমি এই আউটপুট আরো চেহারা পছন্দ করাopenssl md5 * > checklist.txt
অ্যাশলে

1
আপনি যদি একটি শেল নির্ণয় করা খুশি যে ব্যবহার করেন, তাহলে **: যাও recursively (যেমন zsh হিসাবে), এটা এমনকি সহজ এরmd5sum **/* 2>/dev/null
জুস্ট

12

একটি দুর্দান্ত চেকসাম তৈরি / যাচাইকরণের প্রোগ্রামটি র্যাশ। এটি এমনকি এসএফভি সামঞ্জস্যপূর্ণ ফাইলগুলি তৈরি করে এবং সেগুলিও পরীক্ষা করে।

এটি md4, md5, sha1, sha512, crc32 এবং অন্যান্য অনেকগুলি সমর্থন করে।

তবুও এটি এমডি 5 ডিপি বা শ 1 প্রদীপের মতো रिकर्सিভ ক্রিয়েশন (-r বিকল্প) করতে পারে।

সর্বশেষে তবে অন্তত আপনি চেকসাম ফাইলের আউটপুট ফর্ম্যাট করতে পারবেন না; উদাহরণ স্বরূপ:

rhash --md5 -p '%h,%p\n' -r /home/

/homeডিরেক্টরিগুলির সাথে পুনরাবৃত্তিভাবে শুরু হওয়া ফাইলগুলির পুরো পথ সহ একটি সিএসভি ফাইল আউটপুট করে ।

আমি crc32 যোগফল filesুকিয়ে দিয়ে -e বিকল্পের পুনরায় নামকরণের ফাইলগুলি অত্যন্ত দরকারী বলে মনে করি।

আপনি ফিনিক্স এনএল 72 এর উদাহরণগুলিতে "rhash" দিয়ে "md5sum" পরিবর্তন করতে পারেন।


1
'/ হোম /' এখানে ঠিক কী করে? এই সরঞ্জামটি দেখতে বেশ ভাল দেখাচ্ছে।
অ্যান্ডি ইবানেজ

আমি মনে করি এটি একটি ত্রুটি, এটি অবশ্যই আমার জন্য ত্রুটি। -P আউটপুট জন্য বিন্যাস। আমি এটা সংশোধন করব।
পিবিএইচজে

7

এখানে আরও দুটি বিস্তৃত উদাহরণ রয়েছে:

  1. প্রতিটি ডিরেক্টরিতে একটি এমডি 5 ফাইল তৈরি করুন যার ইতিমধ্যে একটি নেই, পরম পাথ সহ:

    find "$PWD" -type d | sort | while read dir; do [ ! -f "${dir}"/@md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 already present" ; [ ! -f "${dir}"/@md5Sum.md5 ] &&  md5sum "${dir}"/* > "${dir}"/@md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5;done 
    
  2. প্রতিটি ফোল্ডারে একটি এমডি 5 ফাইল তৈরি করুন যার ইতিমধ্যে একটি নেই: কোনও পথ নেই, কেবল ফাইলের নাম:

    find "$PWD" -type d | sort | while read dir; do cd "${dir}"; [ ! -f @md5Sum.md5 ] && echo "Processing " "${dir}" || echo "Skipped " "${dir}" " @md5Sum.md5 allready present" ; [ ! -f @md5Sum.md5 ] &&  md5sum * > @md5Sum.md5 ; chmod a=r "${dir}"/@md5Sum.md5 ;done 
    

1 এবং 2 এর মধ্যে পার্থক্যটি কীভাবে ফাইলগুলি এমডি 5 ফলাফল হিসাবে উপস্থাপন করা হয়।

কমান্ডগুলি নিম্নলিখিতটি করে:

  1. বর্তমান ফোল্ডারের জন্য ডিরেক্টরি নামের একটি তালিকা তৈরি করুন। (গাছ)
  2. ফোল্ডার তালিকা বাছাই করুন।
  3. @ Md5sum.md5 ফাইলটি বিদ্যমান থাকলে প্রতিটি ডিরেক্টরিতে পরীক্ষা করে দেখুন। যদি এটি বিদ্যমান থাকে তবে আউটপুট এড়িয়ে যায়, যদি এটি না থাকে তবে আউটপুট প্রসেসিং।
  4. যদি @ md5Sum.md5 ফাইলটি বিদ্যমান না থাকে তবে md5Sum ফোল্ডারের সমস্ত ফাইলের চেকসাম সহ একটি উত্পন্ন করবে। 5) উত্পন্ন @ md5Sum.md5 ফাইলটি কেবল পড়ার জন্য সেট করুন।

এই সম্পূর্ণ স্ক্রিপ্টের আউটপুট কোনও ফাইলের (.....; সম্পন্ন> টেস্ট.লগ) পুনর্নির্দেশ করা যেতে পারে বা অন্য প্রোগ্রামে পাইপ করা যায় (গ্রেপের মতো)। আউটপুট কেবল আপনাকে জানায় যে কোন ডিরেক্টরিগুলি এড়িয়ে গেছে এবং কোনটি প্রক্রিয়াজাত হয়েছে।

একটি সফল রান করার পরে, আপনি আপনার বর্তমান ডিরেক্টরিটির প্রতিটি উপ ডিরেক্টরিতে একটি @ md5Sum.md5 ফাইল দিয়ে শেষ করবেন

আমি @ md5Sum.md5 ফাইলটির নাম দিয়েছি যাতে এটি একটি সাম্বা ভাগ করে ডিরেক্টরিতে শীর্ষের উপরে তালিকাভুক্ত হবে।

সমস্ত @ md5Sum.md5 ফাইল যাচাই করা পরবর্তী আদেশগুলি দ্বারা করা যেতে পারে:

find "$PWD" -name @md5Sum.md5 | sort | while read file; do cd "${file%/*}"; md5sum -c @md5Sum.md5; done > checklog.txt

এরপরে আপনি পৃথক পৃথক সমস্ত ফাইলের একটি তালিকা পেতে grep -v ঠিক আছে ব্যবহার করে checklog.txt গ্রেপ করতে পারেন।

একটি নির্দিষ্ট ডিরেক্টরিতে একটি @ md5Sum.md5 পুনঃজেনার করার জন্য, আপনি উদাহরণস্বরূপ ফাইলগুলি পরিবর্তন বা যুক্ত করার সময়, @ md5Sum.md5 ফাইলটি মুছুন বা নাম পরিবর্তন করুন এবং আবার জেনেট কমান্ডটি চালান।


পূর্ণ পথ ব্যবহার করে কমান্ড # 1: md5sum "$ ir dir}" / * বিন্দু দিয়ে শুরু করা লুকানো ফাইলগুলি তুলছে না। কোন প্রতিকার?
ব্যবহারকারী 14654

পার্টিতে দেরীতে, তবে যেহেতু এমডি 5সাম ফাইলের নাম চায় (যদি আপনি এটি ডিরেক্টরিটি দিয়ে থাকেন তবে সন্তুষ্ট মনে হয়) সাহায্যের জন্য জিজ্ঞাসা করা সবচেয়ে সহজ হতে পারে: $ এমডি 5সাম $ ("$ দির" -ম্যাক্সডেপথ 0 -প্রকার চ) "- টাইপ এফ "নিয়মিত এবং .hhid ফাইল টানুন (এছাড়াও অনেকগুলি বিকল্প রয়েছে এটি সন্ধান করুন, তবে এটি সুপার সহায়ক হতে পারে)। যদি আপনি পুনরাবৃত্তভাবে সবকিছু চান তবে "-maxdepth 0" অংশটি ছেড়ে দিন। দ্রষ্টব্য: এই ভঙ্গুর হলে ফাইলের নামের স্পেস এমবেডেড পেয়ে থাকেন তাহলে আপনি xargs এবং -0 (আপ পড়তে পারেন en.wikipedia.org/wiki/Xargs )
jgreve

0

আমি এই সমস্যাটিকে আঘাত করেছি, এবং উপরের সমাধানগুলি মার্জিত হ'ল, আমি এই পরিস্থিতির জন্য একটি দ্রুত এবং নোংরা হ্যাক চেয়েছিলাম: 1 ডিরেক্টরি, যার ভিতরে এটির একটি উপ-ডিরেক্টরি রয়েছে level

সুতরাং, একটি শেলের মধ্যে ডিরেক্টরি লিখুন এবং রান করুন:

md5sum * */* 2>/dev/null > md5sum.md5

এটি শীর্ষ স্তরের ডিরেক্টরিতে সমস্ত ফাইল পায়, সাব ডিরেক্টরিগুলি ডিরেক্টরি হওয়ার বিষয়ে ত্রুটি সতর্কতা সরিয়ে দেয় এবং তারপরে সাব-ডিরেক্টরি ডিরেক্টরিতে md5sums চালায়। সুবিধা: মনে রাখা সহজ, এটি করার কথা বলে ঠিক তাই করে does আমি সিনট্যাক্স সন্ধান করে সর্বদা বিভ্রান্ত হয়ে পড়ি এবং এটি কখনই আমার মাথার উপরের দিক থেকে মনে করতে পারি না, সুতরাং লুপ ইত্যাদির দরকার নেই, ডিরেক্টরি নামে ফাঁকা স্থান নিয়ে কাজ করা, এই এক লাইনার ভাল কাজ করে worked একটি শক্তিশালী শক্তিশালী সমাধান নয়,> 1 টি সাব-ডাইরেক্টরিজগুলির পক্ষে ভাল নয়, তবে সমস্যার দ্রুত এবং সহজ সমাধান।

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