Así que iba a hacer una copia de seguridad de mi carpeta de inicio copiándola en una unidad externa de la siguiente manera:
sudo cp -r /home/my_home /media/backup/my_home
Con el resultado de que todas las carpetas en las unidades externas ahora son propiedad de root:root
. ¿Cómo puedo cp
mantener la propiedad y los permisos del original?
permissions
cp
Psachnodaimonia
fuente
fuente
man
para mí es críptico. En este caso,man
en-r
dicesame as --preserve=mode,ownership,timestamps
. ¿Cómo se suponía que debía saber eso significa mantener los permisos originales?-p
Respuestas:
Desde la página de manual de cp:
fuente
cp -a
. Esto también incluye la-r
bandera ecursiva, pero hace más que eso: conserva todo sobre el archivo; Atributos de SELinux, enlaces, xattr, todo. Es "modo de archivo". Hay mejores herramientas para hacer una copia de seguridad, pero si está utilizandocp
una copia de seguridad, no use otra cosa que no seacp -a
.cp -a
no funciona en algunos sistemas: por ejemplo, OS X, donde (al menos en algunas versiones) uno necesitaba usarcp -pR
. Sin embargo, en mi sistema OS X actual (10.10.15),cp -a
parece ser honrado.diff <(getfacl -R folder1) <(getfacl -R folder2)
parece que obtendré diferentes listas de control de acceso :(También puedes usar
rsync
.Desde la página del
rsync
manual:Vea esta pregunta para una comparación entre
cp
yrsync
: https://stackoverflow.com/q/6339287/406686Tenga en cuenta las barras inclinadas (consulte la página de manual para más detalles).
fuente
cp -p
es agradable, pero me gustarsync
's de salida mucho más en general que he aliaspcp
atime rsync --progress -ah
. Significa "copia de progreso" en mi mente. Y ambos aceptan-r
, por lo que funciona bien para el uso general del terminal, pero desafortunadamente, no en combinación con losudo
que se muestra en esta pregunta / respuesta.rsync -a
no conserva los atributos extendidos (-X
) y no tiene ACL (-A
), dice la breve descripciónarchive mode; equals -rlptgoD (no -H,-A,-X)
. Por ejemplo, los contextos SELinux no se conservarán sin él-X
. Para muchos casos de uso, esto está bien, pero si realiza una copia de seguridad de la partición de su sistema, la falta de -X podría romperse bastante. Que yo sepa,cp -a
realmente conserva todos los atributos del archivo.sudo cp -a
conserva la propiedad y los grupos, lossudo rsync -a
cambia a raíz. Entonces, @Perseids es correcto./home
carpetarsync -aX /home /mnt/sdd/
y funcionó de maravilla.Where
-a
es la abreviatura de--archive
: básicamente copia un directorio exactamente como es; los archivos retienen todos sus atributos y los enlaces simbólicos no están desreferenciados (-d
).De
man cp
:fuente
Utilizo el
cp -pdRx
cual-p
conservará el modo, la propiedad y las marcas de tiempo,-d
conservará los enlaces (para que obtenga enlaces simbólicos en lugar de copiar el contenido del archivo), lo-R
haga de forma recursiva y-x
permanezca en un sistema de archivos (solo realmente útil si está copiando/
o algo con un punto de montaje activo )PD: en
-R
lugar de-r
solo es costumbre de usarls -lR
.fuente
cp -ax
es una versión un poco más corta de lo mismo. Esto funcionó muy bien, ¡gracias!-r
y-R
. Consulte la página de manual (incluso la parte en particular es demasiado larga para ser citada aquí).-R, -r, --recursive copy directories recursively
.cp
tiene una opción para preservar la propiedad del archivo. De la página del manual decp
:fuente
Puedes hacer algo como esto:
tar
mantiene intactos los permisos, la propiedad y la estructura del directorio, pero convierte todo en una secuencia de bytes. Ejecutas una "subshell" (los comandos entre paréntesis) que cambian de directorio y luegotar
invierten la conversión. Un vapor de bytes se convierte en directorios y archivos con la propiedad y los permisos correctos.fuente
La respuesta es simple:
cp
tiene una-p
opción que conserva los permisos (aquí hay un pez).Pero como dice Wojtek en su comentario,
man cp
(leer el excelente manual) sería un buen punto de partida (¿quieres aprender a pescar?).fuente
puede usar preserve = all, luego su copia mantendrá todos los atributos como propietario, grupo y marca de tiempo de sus archivos. Entonces, haga su copia de seguridad de forma segura con el siguiente comando.
fuente