두 폴더의 콘텐츠 소유자와 권한을 비교하고 있습니까?


10

두 폴더의 콘텐츠 소유자와 권한을 비교하는 방법은 무엇입니까? diff두 폴더를 재귀 적으로 비교하고 소유자 및 권한 차이를 표시하는 명령 과 같은 것이 있습니까?

답변:


11

모든 것과 마찬가지로 해결책은 perl 스크립트입니다.

#!/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.htmlhttp://perldoc.perl.org/File/Find.html 대한 추가 정보를 원하시면, 특히 대한 stat다른 파일 특성을 비교하려면 하나.

파일이 directory2에 존재하지 않지만 directory1에 존재하면 파일이 다르기 때문에 출력도 있습니다 stat.


권한을 UNIX 스타일로 인쇄하려면 다음과 같이하십시오.printf ("Permissions for %s and %s are not the same (%04o != %04o)\n", $file1, $file2, $mode1 &07777, $mode2 &07777) if ( $mode1 != $mode2);
Marcus

3

찾기 및 통계 :

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

두 디렉토리 모두에서 실행 한 다음 두 목록 파일을 비교하십시오.

펄의 악에서 당신을 구합니다 ...


1
그럼 그냥 결과 :은 diff
CrazyMerlin

1

두 폴더가 어느 정도 재귀 적으로 동일해야합니까? 나는 그 rsync명령이 매우 강력 하다고 생각합니다 .

귀하의 경우 다음을 실행할 수 있습니다.

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

다른 파일 또는 폴더가 명령 출력으로 나열됩니다.

man rsync이러한 옵션에 대한 자세한 내용은를 참조하십시오 .


위의 명령에서 src_dir 대신 src_dir /을 사용하면 해당 내용이 dst_dir의 내용에 매핑됩니다.)
Bill Zhao

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

세 번째 열은 소유자이고, 네 번째 열은 그룹입니다.


음, temp와 temp2의 내용은 어떻습니까?
cjc

두 가지 방법 : 두 개의 쉘을 열면 두 폴더로 이동하여 동일한 ls -al 명령을 수행하거나 tmux를 사용하여 하나의 쉘을 수행하거나 한 폴더로 이동하여 다른 폴더로 이동하여 동일한 명령을 다시 수행하십시오.
Lucas Kauffman

2
이 솔루션은 확장되지 않습니다.
Artem Russakovskii

0

두 디렉토리의 구조가 동일하고 tree설치 한 경우 다음을 수행하여 디렉토리를 비교할 수 있습니다.

diff <(tree -ap parent_dir_1) <(tree -ap parent_dir_2)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.