ডিরেক্টরিগুলির মধ্যে পার্থক্য কীভাবে তুলনা করতে হবে (লিনাক্স)


24

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

সম্পাদনা: আমি কীভাবে স্থানীয় সাথে দূরবর্তী দির তুলনা করব ?

উত্তর:


35

ডিফার ম্যান পৃষ্ঠা থেকে:

যদি ফাইল থেকে টু ফাইল উভয়ই ডিরেক্টরি হয় তবে উভয় ডিরেক্টরিতে বর্ণানুক্রমিকভাবে আলাদা ফাইলের সাথে পৃথকের তুলনা করা যায়; -r বা --recursive বিকল্প দেওয়া না হলে এই তুলনাটি পুনরাবৃত্ত হবে না। ডিফ কখনই কোনও ডিরেক্টরিের প্রকৃত বিষয়বস্তুর তুলনা করে না যেমন এটি কোনও ফাইল। সম্পূর্ণরূপে নির্দিষ্ট করা ফাইলটি স্ট্যান্ডার্ড ইনপুট নাও হতে পারে, কারণ স্ট্যান্ডার্ড ইনপুট নামবিহীন এবং একই নামযুক্ত ফাইল '' ধারণার প্রয়োগ হয় না।

সুতরাং ডিরেক্টরি তুলনা: diff --brief -r dir1 dir2

পাশাপাশি ফাইলগুলি তুলনা করতে: diff --side-by-side file1 file2


খুব দুর্দান্ত, আমি একবার চেষ্টা করব
ফিল

... আমি অবাক করে কীভাবে আমি স্থানীয় একের সাথে দূরবর্তী ডিরেক্টরিটি তুলনা করব?
ফিল

1
আপনাকে স্থানীয় মেশিনে রিমোট ডিরেক্টরিটি মাউন্ট করতে হবে। তবে, আপনি যেমন ফাইলগুলি দূরবর্তী থেকে তুলনা করতে পারেন: ssh REMOTE_SERVER "বিড়াল / পথ / থেকে / কিছু / ফাইল" | ডিফ - পাশের পাশ / পথ-থেকে-কিছু-ফাইল - অন্য একটি বিষয়, 'টাইপ-সাইড-বাই-সাইড' টাইপ করতে চাইলে 'sdiff' কমান্ডটি কাজ করে।
শান স্ট্যাটস

2
রিমোট ডিরেক্টরিটি মাউন্ট করতে এনএফএস ব্যবহার করুন। রিমোট সার্ভারে (সার্ভার-বি), সম্পাদনা / ইত্যাদি / রফতানি করুন এবং এতে নিম্নলিখিতগুলি রাখুন: / পাথ / অফ / ডিরেক্টরি / টু / শেয়ার সার্ভার- a.ip.address (রো, নো_রোট_সকোয়াশ) সার্ভার-বিতে এনএফএস শুরু করুন (/etc/init.d/nfs আরম্ভ) আপনার স্থানীয় সার্ভারে মাউন্ট করুন (সার্ভার-এ) নিম্নলিখিতগুলিতে / etc / fstab- এ যোগ করে: সার্ভার-বি.আইপি.এডিডি: / পথ / / ডিরেক্টরি / থেকে / ভাগ করুন / mnt / server-b nfs rsize = 32768, wsize = 32768, rw 0 0 তারপরে সার্ভার-এ, mkdir / mnt / server-b; মাউন্ট / mnt / সার্ভার-বি আপভোটগুলির জন্য ধন্যবাদ।
শান স্ট্যাটস

2
আপনি sshfsএনএফএস ব্যবহার না করে একটি অ্যাড-হক অস্থায়ী নেটওয়ার্ক ডিরেক্টরি তৈরি করতে ব্যবহার করতে পারেন ।
ড্যান অ্যান্ড্রিটা

3

ধরে নেওয়া যাক:

  • আমরা আছি www1 রিমোটের সাথে তুলনাwww2
  • স্থানীয় থেকে সার্বজনীন কী প্রমাণীকরণ রয়েছে www1 থেকে দূরবর্তীwww2
  • আমরা স্থানীয় www1এবং দূরবর্তী একই ব্যবহারকারী হিসাবে তুলনাwww2
/ var / www / html / -name "*" -এক্সেক এমডি 5সাম-বি {} \; | গ্রেপ-ভি "/ ভেরি / www / এইচটিএমএল / বাদ দিন_তাহলে"> স্থানীয়.এমডি 5
ssh www2 "Find / var / www / html / -name '*' -exec md5sum -b {} \; | গ্রেপ-ভি / ভেরি / www / এইচটিএমএল / বাদ দিন_দির> রিমোট.এমডি 5"
scp www2: remote.md5।
ডিফারেক্ট লোকাল.এমডি 5 রিমোট.এমডি 5 

3

আপনি সত্যিই আপনাকে নমনীয়, ভালভাবে আলাদা করার rsyncক্ষমতা দিয়ে ব্যান্ডউইথ খরচ হ্রাস করার শক্তিকে একত্রিত করতে চান diff

সুতরাং এর মতো কিছু:

cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/* 
diff -wur $local $bak

আমার ধারণা আপনি যদি এটি প্রথম সারির rsyncপরিবর্তে প্রায়শই ব্যবহার করে থাকেন তবে আপনি এটি কিছুটা সামলাতে পারেন cp- স্পষ্টতই শেষ লাইনে diffআপনার পছন্দ মতো তবে এটির বিন্যাস করার সম্পূর্ণ ক্ষমতা আপনার রয়েছে। সম্ভবত ওপিএস ক্ষেত্রে ওয়াইয়ের সাথে

এই পদ্ধতির বিপরীতে আপনি দ্বিগুণ লোকাল স্পেস ব্যবহার করে শেষ করছেন তবে $ 1 / জিগের চেয়ে কম কে যত্ন করে?


cp --reflink=auto --sparse=alwaysঅন্তর্নিহিত এফএস এর উপর নির্ভর করে অনুলিপিটির জন্য কোনও স্থান ব্যবহার করতে।
টম হেল

1

কি diff old_dir new_dir > diff.txtএকই সার্ভারে পাশ পার্থক্য দ্বারা পাশ জন্য।

রিমোট ফাইলগুলির জন্য:

উদাহরণস্বরূপ: এবিসি বিদ্যমান সার্ভার এবং এক্সওয়াইজেড আপনার রিমোট সার্ভার এবং ডিরেক্টরিটির নাম 123।

পদক্ষেপ 1: বিদ্যমান ডিরেক্টরি 123_BC হিসাবে এবিসি সার্ভারে নতুন নামকরণ করুন।

ABC:/Home > mv 123 123_ABC

পদক্ষেপ 2: ABC সার্ভারে একটি নতুন ডিরেক্টরি তৈরি করুন:

ABC: > mkdir 123_XYZ

পদক্ষেপ 3: এক্সওয়াইজেড সার্ভারে 123 ডিরেক্টরি থেকে সমস্ত ফাইলগুলি এবিসি সার্ভারে 123_XYZ ডিরেক্টরিতে অনুলিপি করুন:

XYZ/123 > scp * userid@ABC: /123_XYZ

এটি আপনার এক্সওয়াইজেড সার্ভারের ডিরেক্টরি থেকে সমস্ত ফাইলকে আপনার এবিসি সার্ভার / 123_XYZ ডিরেক্টরিতে অনুলিপি করবে।

পদক্ষেপ: 4: উভয় ডিরেক্টরিতে পার্থক্য করুন:

এখন এবিসি সার্ভারে যান এবং 123_ABC এবং 123_XYZ এর মধ্যে পারফরম্যান্স করুন

ABC > diff 123_ABC 123_XYZ > diff.txt

উপরের কমান্ডটি একই পথে পৃথক ফলাফলগুলি সংরক্ষণ করবে will

আপনি তারপর পার্থক্য তুলনা করতে পারেন।

ধন্যবাদ,

তানবিরা


0

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

অথবা মেল্ড, গিফি, কেডিফ 3, ডিফ, ভিমডিফ, জিভিমডিফ, ইম্যাকস, কোম্পার, ডিফিউজ, ইজিডিফ, টকডিফ বা এক্সএক্সডিডিফের মতো একটি গুই ডিফ সরঞ্জাম ব্যবহার করুন। বেশিরভাগ ফাইলের ডিফগুলি ছাড়াও ডিরেক্টরি পৃথক্ করবেন। অন্যরা যেমন উল্লেখ করেছে তেমন আপনাকে এনএফএস, এসএমবিএফএস বা এসএসএইচএসএস ব্যবহার করে দূরবর্তী ড্রাইভটি মাউন্ট করতে হবে।


0

অথবা আপনি ফাইলের তালিকার বাইরে রাখা ফাইল দুটি ব্যবহার করতে পারেন। এবং তারপরে এই দুটি ফাইলের তুলনা করুন। উদাহরণ স্বরূপ:

/path/to/compare/remote$: ls > remote-files 

/path/to/compare/local$: ls > local-files 

ফাইলগুলির মধ্যে একটি ডাউনলোড করুন।

-rw-r - r-- 1 1015 1015 26624 2005-06-14 13:10 ফাইল। টিএক্সটি  

FILE.TXT এ

diff -y remote-files local-files > diff-filesপাশাপাশি পাশাপাশি তুলনা করতে ডিফ ( ) ব্যবহার করুন। ডিফ-ফাইলগুলি খুলুন এবং এটি পরীক্ষা করুন। > এর সাথে প্রতিটি লাইনের অর্থ একটি আলাদা ফাইল।

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