J'allais donc sauvegarder mon dossier personnel en le copiant sur un disque externe comme suit:
Sudo cp -r /home/my_home /media/backup/my_home
Ainsi, tous les dossiers des disques externes appartiennent désormais à root:root
. Comment puis-je avoir cp
conserver la propriété et les autorisations de l'original?
Sudo cp -rp /home/my_home /media/backup/my_home
Depuis la page de manuel de cp:
-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
Vous pouvez également utiliser rsync
.
Sudo rsync -a /home/my_home/ /media/backup/my_home/
À partir de la page de manuel rsync
:
-a, --archive
This is equivalent to -rlptgoD. It is a quick way of saying you want
recursion and want to preserve almost everything (with -H being a notable
omission). The only exception to the above equivalence is when
--files-from is specified, in which case -r is not implied.
Note that -a does not preserve hardlinks, because finding multiply-linked
files is expensive. You must separately specify -H.
Voir cette question pour une comparaison entre cp
et rsync
: https://stackoverflow.com/q/6339287/406686
Notez les barres obliques de fin (voir la page de manuel pour plus de détails).
cp -a
Où -a
est l'abréviation de --archive
- en gros, il copie un répertoire exactement tel qu'il est; les fichiers conservent tous leurs attributs et les liens symboliques ne sont pas déréférencés (-d
).
De man cp
:
-a, --archive
same as -dR --preserve=all
J'utilise cp -pdRx
Qui va -p
mode de conservation, propriété et horodatage, -d
conserve les liens (vous obtenez donc des liens symboliques à la place du contenu du fichier copié), -R
le faire récursivement et -x
rester sur un seul système de fichiers (très utile uniquement si vous copiez /
ou quelque chose avec un point de montage actif).
PS: -R
au lieu de -r
est juste l'habitude d'utiliser ls -lR
.
cp
a une option pour préserver la propriété des fichiers. Depuis la page de manuel de cp
:
-p Cause cp to preserve the following attributes of each source file in the copy: modification
time, access time, file flags, file mode, user ID, and group ID, as allowed by permissions.
Access Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also
be preserved.
Vous pouvez faire quelque chose comme ça:
tar cf - my_home | (cd /media/backup; Sudo tar xf - )
tar
conserve les autorisations, la propriété et la structure du répertoire, mais convertit tout en un flux d'octets. Vous exécutez un "sous-shell" (les commandes entre parenthèses) qui change de répertoire, puis obtenez tar
pour inverser la conversion. Une vapeur d'octets devient des répertoires et des fichiers avec une propriété et des autorisations correctes.
La réponse est simple: cp
a un -p
option qui préserve les autorisations (voici un poisson).
Mais comme Wojtek le dit dans son commentaire, man cp
(lire le bon manuel) serait un bon point de départ (vous voulez apprendre à pêcher?).
vous pouvez utiliser preserve = all, votre copie conservera tous les attributs comme le propriétaire, le groupe et l'horodatage de vos fichiers. Faites donc votre sauvegarde en toute sécurité avec la commande suivante.
cp -r --preserve=all /home/my_home /media/backup/my_home