web-dev-qa-db-fra.com

Comment transférer les autorisations de fichiers d'un dossier à un autre?

J'ai fait cp -r sur un dossier (copie), puis j'ai supprimé l'original. J'ai une sauvegarde avec la plupart des fichiers. Comment restaurer les autorisations des fichiers et des dossiers sur la copie à l'aide de la sauvegarde?

Il serait très fastidieux d’entrer et de faire chmod XXX filename chaque article qu’il contient.

2
BLaZuRE

Vous pouvez utiliser stat pour interroger le mode de votre fichier de sauvegarde et chmod pour mettre à jour vos fichiers de travail. Faites cela en boucle, avec une petite manipulation de chaîne, et vous avez une solution. Quelque chose comme ceci devrait fonctionner pour copier les autorisations:

# path to the top level of the backup
backup_dir=/path/to/backup/dir

# path to the directory of files that you want to restore
# permissions on.
dir=/path/to/working/dir

find "$backup_dir" |
while read backup_file
do
    new_file="$dir${backup_file#$backup_dir}"
    chmod --reference="$backup_file" "$new_file"
done

Notez que cela ne fonctionnera pas bien si vos noms de fichiers contiennent le caractère de nouvelle ligne (mais c'est assez rare). En outre, il n'a pas encore été testé. Vous pouvez donc effectuer un "essai à blanc" en remplaçant "chmod" par "echo chmod", de sorte qu'il affiche simplement ce qu'il ferait.

2
Jeremy Kerr

Quel système de sauvegarde utilisez-vous? S'il s'agit d'une sauvegarde Ubuntu, vous pouvez restaurer l'original à l'aide de Nautilus. Cliquez avec le bouton droit dans le dossier parent et choisissez "Restaurer les fichiers manquants" dans le menu.

0
Jazz

utilisez cp -a ou plus généralement cp --preserve=all

depuis la page de manuel

 --preserve [= ATTR_LIST] 
 conserve les attributs spécifiés (par défaut: mode, propriétaire - 
 navire, horodatage), si possible des attributs supplémentaires: contexte, 
 liens, xattr, tous 
 

chmod possède également une option récursive (-R).

0
user72421