GNU/Linux >> Linux Esercitazione >  >> Linux

Confrontare i proprietari e le autorizzazioni del contenuto di due cartelle?

Soluzione 1:

La soluzione, come per tutte le cose, è uno script 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 );
}

Guarda http://perldoc.perl.org/functions/stat.html e http://perldoc.perl.org/File/Find.html per maggiori informazioni, in particolare il stat uno se vuoi confrontare altri attributi di file.

Se i file non esistono nella directory2 ma esistono nella directory1, ci sarà anche l'output perché il stat sarà diverso.

Soluzione 2:

Trova e calcola:

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

Eseguilo in entrambe le directory, quindi confronta i due file di elenco.

Ti salva dai mali di Perl...


Linux
  1. Come modificare autorizzazioni e proprietari tramite riga di comando

  2. Linux:comprensione delle autorizzazioni e dei tipi di file Unix?

  3. Precedenza dell'utente e del proprietario del gruppo nelle autorizzazioni dei file?

  4. Autorizzazioni Ssh e Home Directory?

  5. Cos'è Content Curation e come dovresti farlo?

Risparmia spazio comprimendo file e cartelle in Linux

Come installare e proteggere Memcached su Ubuntu 18.04

Come confrontare il contenuto di due tarball

Confronto di due file nel terminale Linux

Cos'è `S_ISREG()` e cosa fa?

Sincronizza due cartelle locali in bash