답변:
모든 것과 마찬가지로 해결책은 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.html 및 http://perldoc.perl.org/File/Find.html 대한 추가 정보를 원하시면, 특히 대한 stat
다른 파일 특성을 비교하려면 하나.
파일이 directory2에 존재하지 않지만 directory1에 존재하면 파일이 다르기 때문에 출력도 있습니다 stat
.
찾기 및 통계 :
find . -exec stat --format='%n %A %U %G' {} \; | sort > listing
두 디렉토리 모두에서 실행 한 다음 두 목록 파일을 비교하십시오.
펄의 악에서 당신을 구합니다 ...
두 폴더가 어느 정도 재귀 적으로 동일해야합니까? 나는 그 rsync
명령이 매우 강력 하다고 생각합니다 .
귀하의 경우 다음을 실행할 수 있습니다.
rsync -n -rpgov src_dir dst_dir
(-n is a must otherwise dst_dir will be modified )
다른 파일 또는 폴더가 명령 출력으로 나열됩니다.
man rsync
이러한 옵션에 대한 자세한 내용은를 참조하십시오 .
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
세 번째 열은 소유자이고, 네 번째 열은 그룹입니다.
printf ("Permissions for %s and %s are not the same (%04o != %04o)\n", $file1, $file2, $mode1 &07777, $mode2 &07777) if ( $mode1 != $mode2);