Linux / Comandos / cp - comando para copiar, mv - comando para mover
En Linux, cp copia archivos o directorios, y mv mueve archivos o directorios o los renombra. El resultado de ambos comandos difiere dependiendo de si la ruta final es un directorio existente, por lo que debes verificar la ruta de destino antes de ejecutar.
Diferencia entre copiar y mover
Los formatos básicos de los dos comandos son cp source destination y mv source destination. Copiar deja una copia separada del original, pero mover o renombrar elimina el elemento de la ruta original después del éxito. Los siguientes ejemplos se basan en cp y mv de GNU coreutils.
Los archivos existentes pueden sobrescribirse con el mismo nombre, así que verifique la ruta y el contenido del destino y prepare las copias de seguridad necesarias antes de manejar datos importantes. La práctica a continuación se realiza en un directorio vacío recién creado.
Preparando archivos de práctica
El siguiente es un ejemplo cuando el directorio cp-mv-practice aún no existe en la ubicación actual. Si ya existe un directorio con el mismo nombre, practique en una ubicación vacía diferente. Si el primer comando falla, no continúe con los comandos posteriores.
mkdir cp-mv-practice
cd cp-mv-practice
printf 'Hello Linux\n' > note.txt
mkdir target
ls
Se muestran el archivo note.txt y un directorio vacío target. Los ejemplos posteriores se ejecutan en orden en este directorio. > de printf sobrescribirá contenidos si existe un archivo con el mismo nombre, por lo que úselo en una ubicación sin datos reales.
Copiando Archivos
El siguiente comando copia note.txt a copy.txt en el directorio actual. Si tiene éxito, tanto el original como la copia existirán.
cp note.txt copy.txt
ls
cat copy.txt
cat muestra el contenido de la copia, Hello Linux. El siguiente comando lo copia en el directorio existente target con el nombre original.
cp note.txt target/
ls target
Si el nombre de destino especificado no es un directorio existente, puede crearse un archivo con ese nombre o sobrescribirse un archivo existente. Por lo tanto, si target es un directorio, cp note.txt target copia el archivo dentro de él, pero si no existe, se creará un archivo llamado target. Para copiarlo con un nombre diferente dentro de un directorio, especifique la ruta completa del destino como se muestra en cp note.txt target/other.txt.
Copiando Directorios
Use la opción recursiva -r al copiar un directorio y su contenido. Lo siguiente copia el target previamente creado a target-copy, que aún no existe.
cp -r target target-copy
ls target-copy
Como resultado, se crea target-copy/note.txt y el target/note.txt original permanece. Por el contrario, si el directorio de destino ya existe, normalmente el directorio original se coloca dentro de él. Por ejemplo, ejecutar cp -r target target-copy nuevamente puede crear target-copy/target. Verifique el destino con ls antes de ejecutar.
GNU cp -a intenta preservar atributos como enlaces, permisos y marcas de tiempo tanto como sea posible al realizar copias recursivas. No se garantiza que todos los atributos se preserven dependiendo de los permisos o del soporte del sistema de archivos de destino. El manejo de enlaces simbólicos también varía según las opciones, así que verifique los datos importantes después de copiar. Para más detalles, consulte el manual de GNU cp.
Mover y Cambiar el Nombre de Archivos
El siguiente comando renombra el copy.txt previamente creado a renamed.txt. Si tiene éxito, copy.txt desaparece y se muestra renamed.txt.
mv copy.txt renamed.txt
ls
A continuación, mueve el archivo a un directorio existente. renamed.txt ya no existe en su ubicación original, y se crea target/renamed.txt.
mv renamed.txt target/
ls target
Al mover o renombrar un directorio, use mv, y no se requiere -r de cp. Si el directorio de destino ya existe, se moverá dentro de él, y si el destino no existe, se moverá con el nombre especificado. Si entra en conflicto con un directorio existente que no está vacío, puede fallar, así que no suponga que se fusiona como copia.
Entre diferentes sistemas de archivos, GNU mv puede manejarlo eliminando el original después de copiar. Los datos grandes pueden tomar tiempo, y si falla a mitad de camino, solo una parte puede moverse, así que verifica los resultados en ambos lados. Puedes consultar las condiciones detalladas en el manual de GNU mv.
Verificaciones de sobreescritura y errores de ruta
Para recibir confirmación antes de sobrescribir un archivo existente, usa -i. El siguiente es un escenario de práctica donde ya existe un archivo con el mismo nombre. Cuando aparezcan las instrucciones, léelas y aprueba solo si tienes la intención de sobrescribir.
cp -i note.txt target/note.txt
mv -i también pregunta antes de reemplazar un archivo de destino existente. La confirmación interactiva no sustituye el manejo de conflictos en scripts automatizados, por lo que en los scripts, verifique por separado el comportamiento previsto y el estado de salida. El comportamiento predeterminado puede diferir en entornos donde los comandos están configurados como alias.
- Cuando hay espacios en la ruta: Encierre cada ruta entre comillas como en
cp "my file.txt" "target/my file.txt". - Cuando no se puede encontrar un archivo o directorio: Verifique la ubicación actual, la ortografía y las mayúsculas y minúsculas usando
pwdyls. - Cuando ocurre un error de permiso: Verifique que tenga permiso de lectura para la fuente y permiso de escritura para el destino, y también revise los permisos requeridos en el directorio de origen al mover. Si no tiene permisos, solicítelos al administrador.
Después de verificar los resultados prácticos, si es necesario, puede eliminar el directorio cp-mv-practice usando una herramienta de gestión de archivos. También hay herramientas como Midnight Commander que permiten copiar y mover archivos mientras se visualiza la lista de archivos, pero si están instaladas en el servidor y los permisos de uso dependen del entorno.




