একটি লিনাক্স গভীর ডিফ ডিফ সরঞ্জাম রয়েছে যা ফাইল বৈশিষ্ট্যগুলির সাথেও তুলনা করে?


17

ডিফের মতো একটি লিনাক্স সরঞ্জাম রয়েছে যা ফাইল এবং ডিরেক্টরিগুলির পুনরাবৃত্তির সাথে তুলনা করবে তবে এর সাথে তুলনা করার পাশাপাশি: বর্ধিত বৈশিষ্ট্য, এসিএল, সি প্রসঙ্গে?


1
সরবরাহ করা উত্তরগুলি একবারে তুলনা করার জন্য কাজ করে। তবে, সফ্টওয়্যার পরীক্ষা করার সময় তারা এই ধরণের তুলনায় এক ঘন্টা বহুবার করার জন্য পর্যাপ্ত নয়। এই তুলনাগুলি অন্তর্ভুক্ত করার জন্য আমি ভিন্ন উত্স কোডটি সংশোধন করতে আগ্রহী।
মাইকেল গ্যান্টজ

উত্তর:


7

আমি এবং পতাকাগুলি rsync -aHAX --deleteযুক্ত করতে মনে রাখার আগে এটি করেছি ।-n-i

এটি সামান্য বিপরীত, তবে আমার সাথে সহ্য করুন। মূল rsyncকমান্ডটি হ'ল আপনাকে দুটি ডিরেক্টরি একসাথে সিঙ্ক করতে হবে। তবে -n -iএটি সিঙ্ক না করার কারণ (যেমন একটি শুকনো রান করুন) এবং এটি কী করেছে এবং কেন তা মুদ্রণ করে। এটি পার্স করা চমত্কার নয়, তবে আপনি ফাইলের নামটি সহজেই খুঁজে পেতে পারেন এবং পাইপটিকে lsঅনুরূপ করতে পারেন ।

এটি এমটাইমস, তারিখ ইত্যাদিসহ সমস্ত কিছুর পাশাপাশি ডিভাইস নোড, সকেট, নামযুক্ত পাইপ ইত্যাদির উপর নজর রাখবে না above আপনি যা দেখছেন সেটি অ্যাডজাস্ট করতে পারবেন বিকল্পগুলিতে পরিবর্তন করে rsync, এটি একটি ডিভাইসে সীমাবদ্ধ করে -x, নরম ও শক্ত লিঙ্ক আচরণ ইত্যাদি ইত্যাদি by


2

জানোস ইতিমধ্যে বলেছিল কী করতে হবে:

find /a -exec stat -c '%A %C %F %g %u %s %Y %n' {} \; >a
find /b -exec stat -c '%A %C %F %g %u %s %Y %n' {} \; >b

diff -u a b

এবং man 1 statবলেছেন:

%A     access rights in human readable form
%C     SELinux security context string
%F     file type
%g     group ID of owner
%u     user ID of owner
%s     total size, in bytes
%Y     time of last modification, seconds since Epoch
%n     file name

ফাইলের সামগ্রীগুলি তুলনা করতে আপনি ব্যবহার করতে পারেন:

find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-

as described here: http://www.commandlinefu.com/commands/view/3555/find-duplicate-files-based-on-size-first-then-md5-hash

এই দ্রবণটি একটি কার্যক্ষম সমাধান সরবরাহ করে না। প্রদর্শিত ভিন্নতাটি প্রসঙ্গমুক্ত এবং পড়া খুব কঠিন। আমি এমন কিছু সন্ধান করছি যা আমাকে একটি ফাইলের নাম এবং এটির থেকে আলাদা কী দেখাতে পারে। দুটি আবিষ্কারের মধ্যে কোনও পার্থক্য নয় যা সম্পূর্ণ ভিন্ন জন্তু।
মাইকেল গ্যান্টজ 16'14

1
জিএনইউতে findজিএনইউ-র statঅন্তর্নির্মিত বৈশিষ্ট্য রয়েছে (এবং কয়েক দশক ধরে জিএনইউ স্ট্যাটাসের পূর্বাভাস দেয়)। আপনি আলাদা করার আগে আউটপুটটি বাছাই করতে চাইবেন। আর আপনার যা দরকার (cd /a && find . ...)অন্যথায় সব লাইন কারণ পৃথক হবে /aবনাম /bফাইল পাথ হবে।
স্টাফেন চেজেলাস

0

বর্ধিত বৈশিষ্ট্যগুলির তুলনা করার জন্য আমি এখানে একটি দ্রুত বাশ স্ক্রিপ্ট লিখেছি। এটি প্রতিটি ফাইলের নাম এবং তারপরে বৈশিষ্ট্যের মধ্যে কোনও পার্থক্য মুদ্রণ করে:

cd a
export relpath=[path/to/b/from/a]

for filename in $(find .);
do
    echo $filename;
    diff <(xattr -l $filename) <(xattr -l $relpath/$filename);
done

অন্য উত্তর থেকে ingণ নেওয়া, আমরা এটির statপরিবর্তে এটি ব্যবহার করতে সংশোধন করতে পারি xattr:

for filename in $(find .);
do
    echo $filename;
    diff <(stat -c '%A %C %F %g %u %s %Y' $filename) <(stat -c '%A %C %F %g %u %s %Y' $relpath/$filename);
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.