GNU/Linux >> Tutoriels Linux >  >> Linux

Comment conserver la propriété et les autorisations de fichiers intactes lors de la copie de fichiers ou de répertoires

L'autre jour, j'avais prévu de sauvegarder certaines données de mon système de bureau Ubuntu sur un lecteur USB externe. Après avoir transféré toutes les données sur le lecteur externe, j'ai remarqué que le propriétaire et les autorisations des fichiers et répertoires sur la source et la destination sont différents. Mais, je voulais garder les attributs de fichier existants (tels que le propriétaire, le groupe et l'horodatage, etc.) intacts sur les deux emplacements. Après une recherche rapide sur Google et en parcourant les pages de manuel de la commande "cp", j'ai découvert que nous pouvions conserver intactes les autorisations de propriété et de fichier lors de la copie de fichiers et de répertoires sous Linux. Si vous avez déjà été dans une situation comme celle-ci, voici une solution rapide pour le faire.

Gardez la propriété et les autorisations de fichiers intactes lors de la copie de fichiers ou de répertoires sous Linux

Le cp La commande a une option pour copier des fichiers et des répertoires mais conserve les heures de modification, les heures d'accès et les modes du fichier d'origine.

$ cp -rp ~/data /media/sk/sk_seagate/data/

Ici, je copie le contenu d'un dossier nommé "data" sur mon disque externe.

Du cp pages de manuel de la commande :

-p     same as --preserve=mode,ownership,timestamps

       --preserve[=ATTR_LIST]
              preserve the specified attributes (default: mode,ownership,timestamps), if possible
              additional attributes: context, links, xattr, all

Donc, si vous utilisez -p flag, il conservera tous les attributs de fichier existants tels que le mode, la propriété et les horodatages du fichier d'origine.

Et le "-r" flag est utilisé ici pour copier des répertoires de manière récursive. Ce qui signifie - il copiera les répertoires et ses sous-répertoires et fichiers.

Alternativement, vous pouvez utiliser -a drapeau. Il inclut le drapeau -r et préserve tout, comme les liens, xattr, les attributs SELinux, etc.

$ cp -a ~/data /media/sk/sk_seagate/data/

À partir des pages de manuel de la commande cp :

-a, --archive
              same as -dR --preserve=all

Pour vérifier si les autorisations et la propriété du fichier sont intactes, utilisez getfacl commande sur les deux emplacements, c'est-à-dire la source et la destination.

$ getfacl ~/data
$ getfacl /media/sk/sk_seagate/data/

Si vous souhaitez copier des fichiers entre le système local et un système distant du même réseau, vous pouvez utiliser "scp" commande pour transférer des fichiers d'un système à un autre comme ci-dessous.

$ scp -rp ~/data [email protected]:/home/senthil/

La commande ci-dessus copiera le dossier de contenu nommé "data" de mon système local vers un système distant. Ici, 192168.225.22 est l'adresse IP de mon système distant et "senthil" est le nom d'utilisateur du système distant.

Vérifiez les autorisations de fichier et la propriété du répertoire "data" sur les deux systèmes à l'aide de la commande "getfacl".

Vérifiez d'abord les attributs de fichier du répertoire "data" sur le système local :

$ getfacl data/

Exemple de résultat :

# file: data/
# owner: sk
# group: sk
user::rwx
group::rwx
other::r-x

Ensuite, vérifiez les attributs de fichier du répertoire "data" sur le système distant. Vous pouvez vous connecter directement au système distant et vérifier les attributs fie d'un répertoire distant via la commande ssh comme ci-dessous.

$ ssh [email protected] getfacl data

Exemple de sortie :

Mot de passe de
[email protected]'s password:
# file: data
# owner: senthil
# group: senthil
user::rwx
group::rwx
other::r-x

Comme vous pouvez le remarquer dans les sorties ci-dessus, les informations sur le propriétaire et le groupe (c'est-à-dire senthil) sont différentes dans mon système distant. Parce que le -p L'indicateur de la commande scp ne conserve pas toutes les autorisations.

À partir des pages de manuel de la commande scp :

-p      Preserves modification times, access times, and modes from the original file.

Il est clair que le -p flag ne conservera que les heures de modification, les heures d'accès et les modes du fichier d'origine, mais pas la propriété . Dans de tels cas, vous pouvez créer un nom d'utilisateur commun sur les deux systèmes et essayer la commande ci-dessus pour conserver la même propriété et les mêmes autorisations de fichiers sur différents systèmes. Ou utilisez simplement la commande "chown" sur le système de destination pour changer le propriétaire.

Pour plus de détails, reportez-vous aux pages de manuel des commandes cp et scp.

$ man cp
$ man scp

Suggestion de lecture :

  • Comment copier des fichiers et modifier la propriété et les autorisations en même temps

J'espère que cela vous aidera.


Linux
  1. Comment copier les autorisations et la propriété des fichiers dans un autre fichier sous Linux

  2. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  3. Comment copier des fichiers et changer la propriété, les autorisations en même temps

  4. Linux chmod et chown - Comment modifier les autorisations et la propriété des fichiers sous Linux

  5. Comment extraire les fichiers .gz et .tar.gz sous Linux

Comment copier des fichiers et des répertoires sous Linux

Comment déplacer des fichiers et des répertoires sous Linux (commande mv)

Comment synchroniser des fichiers et des répertoires à l'aide de Zaloha.sh

Comment afficher et créer des fichiers et des répertoires cachés sous Linux

Comment renommer des fichiers et des répertoires sous Linux

Comment copier des fichiers et des répertoires dans un terminal Linux