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 cpmantener la propiedad y los permisos del original?
permissions
cp
Psachnodaimonia
fuente
fuente

manpara mí es críptico. En este caso,manen-rdicesame as --preserve=mode,ownership,timestamps. ¿Cómo se suponía que debía saber eso significa mantener los permisos originales?-pRespuestas:
Desde la página de manual de cp:
fuente
cp -a. Esto también incluye la-rbandera 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á utilizandocpuna copia de seguridad, no use otra cosa que no seacp -a.cp -ano 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 -aparece 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
rsyncmanual:Vea esta pregunta para una comparación entre
cpyrsync: https://stackoverflow.com/q/6339287/406686Tenga en cuenta las barras inclinadas (consulte la página de manual para más detalles).
fuente
cp -pes agradable, pero me gustarsync's de salida mucho más en general que he aliaspcpatime 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 losudoque se muestra en esta pregunta / respuesta.rsync -ano 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 -arealmente conserva todos los atributos del archivo.sudo cp -aconserva la propiedad y los grupos, lossudo rsync -acambia a raíz. Entonces, @Perseids es correcto./homecarpetarsync -aX /home /mnt/sdd/y funcionó de maravilla.Where
-aes 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 -pdRxcual-pconservará el modo, la propiedad y las marcas de tiempo,-dconservará los enlaces (para que obtenga enlaces simbólicos en lugar de copiar el contenido del archivo), lo-Rhaga de forma recursiva y-xpermanezca en un sistema de archivos (solo realmente útil si está copiando/o algo con un punto de montaje activo )PD: en
-Rlugar de-rsolo es costumbre de usarls -lR.fuente
cp -axes una versión un poco más corta de lo mismo. Esto funcionó muy bien, ¡gracias!-ry-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.cptiene una opción para preservar la propiedad del archivo. De la página del manual decp:fuente
Puedes hacer algo como esto:
tarmantiene 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 luegotarinvierten 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:
cptiene una-popció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