in

comando cp en Linux con ejemplos

gfg 200x200 min

cp representa Copiar. Este comando se utiliza para copiar archivos o grupos de archivos o directorios. Crea una imagen exacta de un archivo en un disco con un nombre de archivo diferente. cp El comando requiere al menos dos nombres de archivo en sus argumentos.

Sintaxis:


cp [OPTION] Source Destination
cp [OPTION] Source Directory
cp [OPTION] Source-1 Source-2 Source-3 Source-n Directory

First and second syntax is used to copy Source file to Destination file or Directory.
Third syntax is used to copy multiple Sources(files) to Directory.

cp El comando funciona en tres modos principales de operación y estas operaciones dependen del número y tipo de argumentos pasados ​​en el comando cp:

  1. Dos nombres de archivo: Si el comando contiene dos nombres de archivo, entonces copia el contenido de 1er archivo al 2do archivo. Si el segundo archivo no existe, primero crea uno y el contenido se copia en él. Pero si existía, simplemente se sobrescribe sin previo aviso. Así que tenga cuidado al elegir el nombre del archivo de destino.
    
    cp Src_file Dest_file
    

    Suponga que hay un directorio llamado geeksforgeeks tener un archivo de texto un.txt.
    Ejemplo:

    
    $ ls
    a.txt
    
    $ cp a.txt b.txt
    
    $ ls
    a.txt  b.txt
    
  2. Uno o más argumentos: Si el comando tiene uno o más argumentos, especificando los nombres de los archivos y siguiendo esos argumentos, un argumento que especifica el nombre del directorio, entonces este comando copia cada archivo de origen en el directorio de destino con el mismo nombre, creado si no existía pero si ya existía entonces será sobrescrito, así que ten cuidado !!.
    
    cp Src_file1 Src_file2 Src_file3 Dest_directory
    

    Supongamos que hay un directorio llamado geeksforgeeks tener un archivo de texto a.txt, b.txt y un nombre de directorio nuevo en el que vamos a copiar todos los archivos.
    Ejemplo:

    
    $ ls
    a.txt  b.txt  new
    
    Initially new is empty
    $ ls new
    
    $ cp a.txt b.txt new
    
    $ ls new
    a.txt  b.txt
    

    Nota: Para este caso último argumento debe ser un directorio nombre. Para que funcione el comando anterior, Dest_directory debe existir porque cp el comando no lo creará.

  3. Dos nombres de directorio: Si el comando contiene dos nombres de directorio, cp copia todos los archivos del directorio de origen en el directorio de destino, creando los archivos o directorios necesarios. Este modo de operación requiere una opción adicional, típicamente R, para indicar la copia recursiva de directorios.
    
    cp -R Src_directory Dest_directory
    

    En el comando anterior, cp El comportamiento depende de si Dest_directory existe o no. Si el Dest_directory no existe, cp lo crea y copia el contenido de Src_directory recursivamente como es. Pero si Dest_directory existe, copia de Src_directory se convierte en subdirectorio bajo Dest_directory.

Opciones:

Hay muchas opciones de cp comando, aquí discutiremos algunas de las opciones útiles:
Suponga un directorio llamado geeksforgeeks contiene dos archivos que tienen algún contenido nombrado como un.txt y b.txt. Este escenario es útil para comprender las siguientes opciones.


$ ls geeksforgeeks
a.txt  b.txt

$ cat a.txt
GFG

$ cat b.txt
GeeksforGeeks

1. -i (interactivo): I significa copia interactiva. Con esta opción, el sistema primero advierte al usuario antes de sobrescribir el archivo de destino. cp solicita una respuesta, si presiona y luego sobrescribe el archivo y con cualquier otra opción lo deja sin copiar.


$ cp -i a.txt b.txt
cp: overwrite 'b.txt'? y

$ cat b.txt
GFG

2. -b (respaldo): Con esta opcion cp El comando crea la copia de seguridad del archivo de destino en la misma carpeta con un nombre diferente y en un formato diferente.


$ ls
a.txt  b.txt

$ cp -b a.txt b.txt

$ ls
a.txt  b.txt  b.txt~

3. -f (fuerza): Si el sistema no puede abrir el archivo de destino para la operación de escritura porque el usuario no tiene permiso de escritura para este archivo, utilice -F opción con cp comando, el archivo de destino se elimina primero y luego se realiza la copia del contenido desde el archivo de origen al de destino.


$ ls -l b.txt
-r-xr-xr-x+ 1 User User 3 Nov 24 08:45 b.txt

User, group and others doesn't have writing permission.

Without -f option, command not executed
$ cp a.txt b.txt
cp: cannot create regular file 'b.txt': Permission denied

With -f option, command executed successfully
$ cp -f a.txt b.txt

4. -ro -R: Copiando estructura de directorio. Con esta opcion cp El comando muestra su comportamiento recursivo copiando toda la estructura del directorio de forma recursiva.
Supongamos que queremos copiar geeksforgeeks directorio que contiene muchos archivos, directorios en gfg directorio (no existe).


$ ls geeksforgeeks/
a.txt  b.txt  b.txt~  Folder1  Folder2

Without -r option, error
$ cp geeksforgeeks gfg
cp: -r not specified; omitting directory 'geeksforgeeks'

With -r, execute successfully
$ cp -r geeksforgeeks gfg

$ ls gfg/
a.txt  b.txt  b.txt~  Folder1  Folder2


5. -p (conservar): Con -pag opción cp conserva las siguientes características de cada archivo fuente en el archivo de destino correspondiente: la hora de la última modificación de datos y la hora del último acceso, la propiedad (solo si tiene permisos para hacer esto) y los bits de permiso del archivo.
Nota: Para la preservación de las características debe ser el usuario root del sistema, de lo contrario las características cambian.


$ ls -l a.txt
-rwxr-xr-x+ 1 User User 3 Nov 24 08:13 a.txt

$ cp -p a.txt c.txt

$ ls -l c.txt
-rwxr-xr-x+ 1 User User 3 Nov 24 08:13 c.txt

Como podemos ver arriba de ambos un.txt y c.txt(creado copiando) tienen las mismas características.

Ejemplos:

Copiando usando * comodín: El comodín de estrella representa cualquier cosa, es decir, todos los archivos y directorios. Supongamos que tenemos muchos documentos de texto en un directorio y queremos copiarlos en otro directorio, toma mucho tiempo si copiamos los archivos 1 por 1 o el comando se vuelve demasiado largo si especificamos todos estos nombres de archivo como argumento, pero usando * comodín se vuelve simple.


Initially Folder1 is empty
$ ls
a.txt  b.txt  c.txt  d.txt  e.txt  Folder1

$ cp *.txt Folder1

$ ls Folder1
a.txt  b.txt  c.txt  d.txt  e.txt


Referencias:
Wikipedia

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

apple touch icon@2

python: ¿cómo clasifico un diccionario por valor?

edit

Catsup vs Ketchup – Diferencia y comparación