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.
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.
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.
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
).