GNU/Linux >> Tutoriels Linux >  >> Linux

Comparaison des propriétaires et des autorisations de contenu de deux dossiers ?

Solution 1 :

La solution, comme pour tout, est un 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 );
}

Regardez http://perldoc.perl.org/functions/stat.html et http://perldoc.perl.org/File/Find.html pour plus d'informations, en particulier le stat un si vous voulez comparer d'autres attributs de fichier.

Si les fichiers n'existent pas dans le répertoire2 mais existent dans le répertoire1, il y aura également une sortie car le stat sera différent.

Solution 2 :

Rechercher et stat :

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

Exécutez cela dans les deux répertoires puis comparez les deux fichiers de liste.

Vous sauve des maux de Perl...


Linux
  1. Linux - Comprendre les autorisations Unix et les types de fichiers ?

  2. Comment comparer deux dossiers et copier la différence dans un troisième dossier ?

  3. Autorisations SSH et répertoire personnel ?

  4. Autorisations de fichiers et sauvegarde ?

  5. Créer un nouvel utilisateur et accorder des autorisations dans MySQL

Autorisations Linux :SUID, SGID et sticky bit

Économisez de l'espace en compressant les fichiers et les dossiers sous Linux

Comment installer et sécuriser Memcached sur Ubuntu 18.04

Comparer deux fichiers dans un terminal Linux

Qu'est-ce que `S_ISREG()` et à quoi sert-il ?

Autorisations par défaut sur les répertoires personnels Linux