¿Cómo copiar archivos en Linux o BSD de un directorio a otro?
Si queremos copiar archivos en Linux o sistemas basados en BSD como ser FreeBSD o Mac OS X, usamos el comando cp, el mismo que nos permite copiar archivos y directorios de un lugar a otro dentro del mismo equipo, o al menos lógicamente dentro del mismo equipo.
Digo Lógicamente porque podemos copiar de us sistema de archivos local a un sistema de archivos de red, lo que haría que efectivamente estemos copiando archivos de un equipo a otro. Pero vamos a ver como funciona este comand básico.
Sintaxis.
La sintaxis del comando cp es como sigue:
bc.. cp [options] [source file] [target file] cp [options] [source file] [target directory]
¿Cómo copiar archivos de un folder a otro?
Si queremos copiar archivos de un folder a otro usamos cp de la siguiente forma:
bc. cp /home/user/peter/archivo.txt /home/user/backup/
Este comando creará un réplica casi exacta del archivo archivo.txt en el directorio /home/user/backup/, los atributos del archivo destino serán diferentes, pero si queremos que sean los mismos que los del origen usamos cp de este modo:
bc. cp -p /home/user/peter/archivo.txt /home/user/backup/
Ahora los siguientes atributos serán preservado siempre que se pueda:
Fecha y hora de modificación
Hora de acceso
Flags del archivo
Permisos del archivo
Usuario al que pertenece
Grupo al que pertenece
Listas de control de acceso
Atributos extendidos
¿Cómo copiar archivos de un lugar a otro o al mismo lugar pero con diferente nombre?
Si queremos copiar archivos de un lugar a otro, o solo queremos copiarlo con distinto nombre en el mismo lugar, usamos el comando cp de la siguiente forma.
bc. cp /home/user/peter/archivo.txt /home/user/peter/archivo-original.txt
Esto va a crear una copia con otro nombre del archivo, es bueno hacer esto con los archivos de configuración antes de realizar cambios en ellos para tener la versión original de los mismos.
Copiar todos los archivos de un directorio.
Si queremos copiar todos los archivos de un directorio a otro.
bc. cp /ruta/* /otra-ruta/
Si queremos copiar todos los archivos de manera recursiva.
bc. cp -R /ruta/* /otra-ruta/
Esto hará casi lo mismo que el comando de arriba, pero además de copiar todos los archivos en /ruta/ también copiará sus directorios y contenidos de estos.
Ahora bien, si lo que deseamos es copiar el mismo directorio /ruta/ a otro lugar con todo su contenido.
bc. cp -R /ruta /otra-ruta/