Comparando proprietários e permissões de conteúdo de duas pastas?

7

Como comparar proprietários e permissões de conteúdo de duas pastas? Existe algo como o comando diff que compara recursivamente duas pastas e exibe diferenças de proprietário e permissões?

    
por J.Olufsen 24.03.2012 / 22:26

4 respostas

10

A solução, como todas as coisas, é um script em 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 );
}

Veja o link e link para mais informações, especialmente o stat one, se você quiser comparar outros atributos de arquivo.

Se os arquivos não existirem no diretório2 mas existirem no diretório1, também haverá saída porque o stat será diferente.

    
por 24.03.2012 / 23:51
1

ls -al mostrará as permissões, se as duas estiverem na mesma pasta, você terá algo assim:

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

A terceira coluna é a proprietária, a quarta é o grupo.

    
por 24.03.2012 / 22:34
1

Você se certifica de que as duas pastas devem ser as mesmas de forma recursiva até certo ponto? Eu acho que o comando rsync é muito poderoso para isso.

No seu caso, você pode executar:

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

Os arquivos ou pastas diferentes serão listados como a saída do comando.

Você pode ver o man rsync para uma explicação mais completa sobre essas opções.

    
por 04.10.2015 / 14:06
0

Encontrar e stat:

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

Execute isso nos dois diretórios e compare os dois arquivos de listagem.

Te poupa dos males do Perl ...

    
por 17.11.2018 / 23:43

Tags