মালিকদের তুলনা এবং দুটি ফোল্ডারের সামগ্রীর অনুমতি?


10

কীভাবে দুটি ফোল্ডারের সামগ্রীর মালিক এবং অনুমতিগুলির তুলনা করবেন? diffকমান্ডের মতো কিছু আছে যা পুনরাবৃত্তভাবে দুটি ফোল্ডার এবং প্রদর্শনের মালিক এবং অনুমতি পার্থক্যগুলির তুলনা করে?

উত্তর:


11

সমাধান, সমস্ত কিছুর মতোই পার্ল স্ক্রিপ্ট:

#!/usr/bin/perl

use File::Find;

my $directory1 = '/tmp/temp1';
my $directory2 = '/tmp/temp2';

find(\&hashfiles, $directory1);

sub hashfiles {
  my $file1 = $File::Find::name;
  (my $file2 = $file1) =~ s/^$directory1/$directory2/;

  my $mode1 = (stat($file1))[2] ;
  my $mode2 = (stat($file2))[2] ;

  my $uid1 = (stat($file1))[4] ;
  my $uid2 = (stat($file2))[4] ;

  print "Permissions for $file1 and $file2 are not the same\n" if ( $mode1 != $mode2 );
  print "Ownership for $file1 and $file2 are not the same\n" if ( $uid1 != $uid2 );
}

http://perldoc.perl.org/functions/stat.html এবং http://perldoc.perl.org/File/Find.html আরও তথ্য, বিশেষ করে এর জন্য statএক যদি আপনি অন্যান্য ফাইল বৈশিষ্ট্যাবলী তুলনা করতে চাই।

যদি ফাইল ডিরেক্টরি 2 তে বিদ্যমান না থাকে তবে ডিরেক্টরি 1 তে উপস্থিত থাকে তবে আউটপুটও থাকবে কারণ statভিন্ন হবে।


আপনি যদি ইউনিক্স-স্টাইলে মুদ্রিত অনুমতি চান তবে এটি কার্যকর হবে:printf ("Permissions for %s and %s are not the same (%04o != %04o)\n", $file1, $file2, $mode1 &07777, $mode2 &07777) if ( $mode1 != $mode2);
মার্কাস

3

সন্ধান করুন এবং স্থিতি:

find . -exec stat --format='%n %A %U %G' {} \; | sort > listing

দুটি ডিরেক্টরিতে এটি চালান এবং তারপরে দুটি তালিকাভুক্ত ফাইলের তুলনা করুন।

পারেলের কুফল থেকে আপনাকে বাঁচায় ...


1
তারপরে কেবল ফলাফলগুলি পৃথক করুন :)
ক্রেজিমার্লিন

1

আপনি কি নিশ্চিত হন যে 2 ফোল্ডারগুলি কিছুটা হলেও একই রকম হওয়া উচিত? আমি মনে করি rsyncকমান্ড এটির জন্য খুব শক্তিশালী।

আপনার ক্ষেত্রে আপনি চালাতে পারেন:

rsync  -n  -rpgov src_dir dst_dir  
(-n is a must otherwise dst_dir will be modified )

কমান্ড আউটপুট হিসাবে বিভিন্ন ফাইল বা ফোল্ডার তালিকাভুক্ত করা হবে।

আপনি man rsyncএই বিকল্পগুলির আরও সম্পূর্ণ ব্যাখ্যার জন্য দেখতে পারেন ।


উপরের কমান্ডে src_dir / src_dir এর স্থলে src_dir ব্যবহার করে এর বিষয়বস্তুগুলি কেবল dst_dir এর সামগ্রীতে ম্যাপিং করা যাবে)
বিল ঝাও

0

ls -al অনুমতিগুলি প্রদর্শন করবে, যদি উভয়ই একই ফোল্ডারে থাকে তবে আপনি এই জাতীয় কিছু পাবেন:

drwxr-xr-x 4 root  root 4096 nov 28 20:48 temp
drwxr-xr-x 2 lucas 1002 4096 mrt 24 22:33 temp2

তৃতীয় কলামটি মালিক, চতুর্থটি গ্রুপ।


উম্ম, টেম্প এবং টেম্প 2 এর বিষয়বস্তু সম্পর্কে কী?
সিজেসি

দুটি উপায়: 2 টি শেল দুটি ফোল্ডারে যায় এবং একই ls -al কমান্ডটি করে, বা 1 টি শাম টিএমাক্স দিয়ে বা কেবল একটি ফোল্ডারে যায় অন্য কমান্ডটি অন্য intoুকে যায় এবং আবার একই কমান্ডটি করে।
লুকাস কাউফম্যান

2
এই সমাধান স্কেল হবে না।
আর্টেম রাশাকোভস্কিই

0

যদি দুটি ডিরেক্টরিগুলির একই কাঠামো থাকে এবং আপনি treeইনস্টল করেন তবে আপনি ডিরেক্টরিগুলি পৃথক করে দেখতে পারেন:

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