
Quiero copiar todos los archivos y carpetas de un directorio a otrosincambiando los permisos del directorio de destino.
Donde la carpeta de origen es 555 y la carpeta de destino es 775. Si uso el comando a continuación, el destino se cambia a 555. No quiero esto.
cp -r /origin/. /destination
¿Cuál es la sintaxis correcta para copiar el contenido de/origin? Para que /destino permanezca 775
No tengo sudo.
Respuesta1
usar rsync
:
rsync -rlD /origin/ /destination/
Lo importante está al /
final de origin/
, que le dice a rsync que copie el contenido del directorio, no el directorio en sí. De esta manera, el directorio de nivel superior no se copia ni /destination
se modifica, excepto por los archivos que se le agregan.
Interruptores explicados:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
Respuesta2
En lugar de copiar el directorio en sí, copie los archivos que contiene.
cp -r /origin/* /destination
Si hay archivos punto (archivos cuyo nombre comienza con el carácter .
), no se copiarán porque *
los omite. Úselo cp -r /origin/.[!.]* /destination
para copiar los archivos punto y cp -r /origin/..?* /destination
si hay archivos cuyo nombre comienza con ..
(aparte de ..
él mismo, que designa el directorio principal).