J'allais donc sauvegarder mon dossier personnel en le copiant sur un lecteur externe comme suit:
sudo cp -r /home/my_home /media/backup/my_home
Il en résulte que tous les dossiers des lecteurs externes sont maintenant la propriété de root:root
. Comment puis-je cp
conserver la propriété et les autorisations de l'original?
permissions
cp
Psachnodaimonia
la source
la source
man
pour moi, c'est cryptique. Dans ce cas,man
à-r
ditsame as --preserve=mode,ownership,timestamps
. Comment étais-je supposé savoir que cela signifiait conserver les autorisations d'origine!?-p
Réponses:
De la page de manuel de cp:
la source
cp -a
. Cela inclut également le-r
drapeau ecursif, mais il fait plus que cela: il préserve tout du fichier; Attributs SELinux, liens, xattr, tout. C'est le "mode archive". Il existe de meilleurs outils pour effectuer une sauvegarde, mais si vous utilisezcp
pour une sauvegarde, n'utilisez rien d'autre quecp -a
.cp -a
ne fonctionne pas sur certains systèmes: par exemple, OS X, où (dans certaines versions au moins), il faut en utiliser uncp -pR
. Sur mon système OS X actuel cependant (10.10.15),cp -a
semble être honoré.diff <(getfacl -R folder1) <(getfacl -R folder2)
j’ai l’impression que différentes listes de contrôle d’accèsVous pouvez également utiliser
rsync
.De la
rsync
page de manuel:Voir cette question pour une comparaison entre
cp
etrsync
: https://stackoverflow.com/q/6339287/406686Notez les barres obliques (voir la page de manuel pour plus de détails).
la source
cp -p
est agréable, mais j'aimersync
est sortie beaucoup plus en général que j'ai Aliasedpcp
àtime rsync --progress -ah
. Signifie «copie de progrès» dans mon esprit. Et les deux acceptent-r
, donc cela fonctionne bien pour une utilisation générale du terminal - mais malheureusement, pas en combinaison avec cesudo
qui est montré dans cette question / réponse.rsync -a
:, ne conserve pas les attributs étendus (-X
) et pas de liste de contrôle d'accès (-A
) - la description courte ditarchive mode; equals -rlptgoD (no -H,-A,-X)
. Par exemple, les contextes SELinux ne seront pas conservés sans-X
. Dans de nombreux cas d'utilisation, c'est correct, mais si vous effectuez une sauvegarde de votre partition système, l'option -X manquante risque de se briser énormément. Autant que je sache,cp -a
conserve vraiment tous les attributs de fichier.sudo cp -a
préservant la propriété et les groupes, en lessudo rsync -a
modifiant en tant que root. Donc, @Perseids est correct./home
dossierrsync -aX /home /mnt/sdd/
et cela a fonctionné à merveille.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
:la source
J'utilise
cp -pdRx
qui-p
conserve le mode, la propriété et l'horodatage,-d
préserve les liens (pour que vous obteniez des liens symboliques au lieu du contenu du fichier copié),-R
faites-le récursivement et-x
restez sur un système de fichiers (utile uniquement si vous copiez/
ou quelque chose avec un point de montage actif ).PS:
-R
au lieu d’-r
être une habitude à utiliserls -lR
.la source
cp -ax
est une version légèrement plus courte de la même chose. Cela a bien fonctionné - merci!-r
et-R
. Consultez la page de manuel (même la partie trop longue pour être citée ici).-R, -r, --recursive copy directories recursively
.cp
a une option pour conserver la propriété du fichier. De la page de manuel decp
:la source
Vous pouvez faire quelque chose comme ça:
tar
conserve les autorisations, la propriété et la structure de répertoires intacts, mais convertit tout en un flux d'octets. Vous exécutez un "sous-shell" (les commandes entre parenthèses) qui changent de répertoire, puis vous deveztar
inverser la conversion. Un flux d'octets devient des répertoires et des fichiers avec la propriété et les autorisations appropriées.la source
La réponse est simple:
cp
dispose d'une-p
option qui préserve les autorisations (voici un poisson).Mais comme le dit Wojtek dans son commentaire,
man cp
(lire le manuel détaillé) serait un bon point de départ (vous voulez apprendre à pêcher?).la source
vous pouvez utiliser preserve = all, votre copie conservera tous les attributs tels que propriétaire, groupe et horodatage de vos fichiers. Alors, faites votre sauvegarde en toute sécurité avec la commande suivante.
la source