Cómo copiar archivos usando el comando "instalar" en Linux

Publicado: 2022-01-29
Arte conceptual de Bash en un escritorio Ubuntu Linux
Fatmawati Achmad Zaenuri/Shutterstock.com

install es un comando versátil para copiar archivos en Linux y macOS. Es perfecto para el usuario avanzado que busca eficiencia. Lea este artículo para descubrir cómo trabajar de manera más inteligente, no más difícil.

Espere, ¿no es para instalar software?

El comando de install puede tener el nombre más engañoso de cualquiera de los comandos de Linux. En realidad no instala ningún software. Si está intentando instalar un paquete de software desde la línea de comandos en Ubuntu u otra distribución basada en Debian, use el comando apt-get . En otras distribuciones de Linux, use la herramienta de administración de paquetes de su distribución de Linux, por ejemplo, dnf en Fedora o zypper en openSUSE.

Entonces, ¿qué hace la instalación?

En pocas palabras, la install combina elementos de los cp (copiar), chown (cambiar propietario), chmod (cambiar modo), mkdir (hacer directorio) y strip (quitar símbolos). Te permite usar funciones de todas ellas en una sola acción.

El comando install puede:

  • Copie archivos como el comando cp .
  • Elija si desea sobrescribir los archivos existentes.
  • Cree el directorio de destino si no existe, como mkdir .
  • Configure los indicadores de permisos de usuario de los archivos, al igual que el comando chmod .
  • Establezca el propietario de los archivos, al igual que el comando chown .
  • Elimine el equipaje no esencial de los archivos ejecutables, al igual que el comando strip .

A pesar de toda esa funcionalidad, el comando de install no tiene demasiadas opciones con las que lidiar.

instalar la página del manual

Cuándo lo usarías

El comando de install probablemente no se usará todos los días. Es útil, pero solo para ciertas situaciones. Un escenario donde la install entra en juego es el desarrollo de software. Digamos que está programando una nueva utilidad. Deberá realizar pruebas fuera del entorno de desarrollo. Para hacerlo, debe copiar los nuevos archivos de programa en un directorio de prueba. Es posible que deba crear el directorio de prueba y debe establecer los permisos y la propiedad correctos para los archivos.

Anuncio publicitario

Debido a que el desarrollo es una actividad iterativa, puede terminar realizando esta secuencia de acciones muchas, muchas veces. El comando de install hace todo el trabajo pesado por usted. Finalmente, cuando su nueva utilidad esté lista para implementarse, puede usar la install para copiarla con los permisos correctos a su ubicación de trabajo final.

Un ejemplo

Un programador está trabajando en una nueva utilidad de este tipo, llamada ana . Consiste en un archivo binario ejecutable y una base de datos. Después de la prueba, debe copiarse en /usr/local/bin para que esté disponible para todos los usuarios del sistema Linux. Deberá sustituir los nombres de archivo y las rutas de directorio en nuestro ejemplo por los archivos y rutas que está usando en su computadora cuando usa install .

Hasta que esté listo para su lanzamiento, se probará en un directorio llamado ~/test/ana . Los miembros del grupo geek tendrán permisos de lectura y ejecución. Otros usuarios también tendrán permisos de lectura y ejecución. El comando de install usa la misma representación numérica para los permisos que chmod . Nuestro programador ha decidido que los permisos deben establecerse en:

  • Propietario: Leer, escribir y ejecutar.
  • Grupo: Leer y ejecutar.
  • Otros: Solo ejecutar.

Cómo usar el comando de install

El directorio de trabajo de nuestro programador ficticio es ~/work . Él escribió el programa, lo compiló y produjo un binario llamado ana . Ya creó el archivo de base de datos con el que trabaja ana , Words.db . Entonces ambos archivos están listos para la prueba. Echemos un vistazo a ellos:

 ls -l ana Palabras.db 

La utilidad ana que acaba de escribir crea anagramas a partir de una frase proporcionada en la línea de comando. Las pruebas de verificación son bastante sencillas.

prueba de la utilidad ana en el directorio de trabajo

Nuestro programador ha invocado a ana con la frase “galleta” y todo parece ir bien. Ahora quiere copiar estos dos archivos en el directorio ~/test/ana para ver si la nueva utilidad funciona correctamente fuera del entorno de desarrollo. Él emite el siguiente comando:

 instalar -D -v ana Words.db -t ~/prueba/ana 

Instale el comando en /test/ana

Las opciones utilizadas en la línea de comando fueron:

  • D : Cree directorios, incluidos los directorios principales, si es necesario.
  • v : Verbose, enumere cada directorio a medida que se realiza y cada copia de archivo a medida que se realiza.
  • t : directorio de destino.
Anuncio publicitario

Podemos ver que install crea el directorio ~/test y luego crea el directorio ~/test/ana . Los archivos se enumeran uno por uno a medida que se copian en el directorio de destino.

Listar los archivos en ~/test/ana confirma que se han copiado correctamente.

 ls-l 

ls en el directorio /test/ana

El siguiente paso es probar la utilidad ana invocándola en el directorio ~/test/ana .

prueba de la utilidad ana en el directorio /test/ana

La utilidad funciona como se esperaba, lo cual es genial. Sin embargo, los permisos no son correctos. El requisito es establecer que los miembros del grupo geek tengan permisos de lectura y ejecución, y que otros usuarios solo tengan permisos de ejecución.

Podemos abordar ambos problemas de manera bastante simple con el siguiente comando. Tenga en cuenta el uso de sudo para ejecutar el comando con permisos de root. Las opciones -o y -g y requieren esto. Se nos pedirá nuestra contraseña cuando emitamos el comando.

 sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana 

comando de instalación con opciones de copia de seguridad y configuración de permisos

  • La opción -b (copia de seguridad) crea copias de seguridad de los archivos antes de que se sobrescriban.
  • La opción -S (sufijo) define el sufijo para los archivos de copia de seguridad. Si no proporciona un sufijo, se usa ~ (tilde). Le estamos pidiendo a install que use el sufijo .bak .
  • Establecemos que el propietario del archivo sea dave usando la opción -o (propietario).
  • La opción -g (grupo) requiere el nombre de un grupo. Este se convierte en el grupo propietario de los archivos. El grupo que vamos a utilizar se llama geek .
  • La opción -m (modo) establece los modos de archivo para los archivos, utilizando la sintaxis numérica estándar chmod .

Ya no necesitamos usar la opción -D (crear directorios), porque sabemos que el directorio de prueba ya existe. También hemos omitido la opción -v (detallado). Listar los archivos en nuestro directorio ~/test/ana nos muestra los detalles del archivo:

 ls-l 

ls en el directorio /test/ana

Esto confirma que se han cumplido todos nuestros requisitos.

  • Los archivos se han copiado en el directorio de prueba.
  • Los permisos se han configurado correctamente.
  • dave es el propietario de los archivos.
  • El grupo geek es el grupo propietario de los dos archivos.
  • De cada archivo se han realizado copias de seguridad, denominadas ana.bak y Words.db.bak.
Anuncio publicitario

Todo eso se logró mediante el uso de un comando. Limpio.

Nuestro programador realiza algunos cambios finales en la utilidad y vuelve a compilar. Los archivos que han cambiado deben copiarse al directorio ~/test/ana desde el directorio ~/work . Podemos hacer esto usando la opción -C (comparar). Si el archivo de origen y el archivo de destino son iguales, el archivo de origen no se copia.

 sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana 

comando de instalación con la opción de comparación -C

Listar los archivos en el directorio de destino nos muestra que el tamaño del archivo ana ha cambiado. Es más grande que el archivo ana.bak . La marca de tiempo en ana también ha cambiado. Estos cambios se deben a que la nueva versión del archivo se ha copiado aquí.

 ls-l 

ls en /test/ana con la utilidad test fo ana

El tamaño del archivo y la marca de tiempo del archivo Words.db no han cambiado. No se realizaron cambios en el archivo Words.db , por lo que no se copió. En un proyecto con muchos archivos, la opción -C (comparar) puede ahorrar mucho tiempo y rotación del disco duro, ya que solo se copian los archivos que se han modificado.

El programador ha vuelto a comprobar que la utilidad ana sigue funcionando.

Es hora de usar install para copiar los archivos al directorio /usr/local/bin . Esto hará que la nueva utilidad esté disponible para todos los usuarios de esta computadora con Linux. Sabemos que existe /usr/local/bin , por lo que no necesitamos crear ese directorio. Podemos usar una versión modificada de nuestro último comando.

Anuncio publicitario

Hemos cambiado el directorio de destino para que sea /usr/local/bin . Hemos eliminado la opción -C (comparar) porque todavía no hay copias de estos archivos en el directorio de destino, por lo que no hay nada con lo que comparar. Del mismo modo, no hay nada de lo que hacer una copia de seguridad, por lo que podemos eliminar la opción -b (copia de seguridad) y la opción -S (sufijo).

 sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin 

instalar copiando archivos a /usr/local/bin

Podemos listar que los archivos han llegado a /usr/local/bin :

 ls-l 

ls de /usr/local/bin

Y como prueba final, cambiemos el directorio a nuestro directorio de inicio y veamos si podemos invocar nuestra nueva utilidad desde allí.

prueba de utilidad ana

Tenga en cuenta que no necesitamos anteponer el comando ana con ./ lo que significa que se ejecuta desde /usr/local/bin . Misión cumplida.

Mencionamos que la instalación puede eliminar las tablas de símbolos redundantes y otros elementos del archivo binario para reducir su tamaño. Hagamos eso ahora. Tenga en cuenta que el siguiente comando no incluye Words.db. Esto se debe a que Words.db es un archivo de base de datos, no un ejecutable binario. Para copiar y reducir el archivo binario ana podemos usar el siguiente comando. Hemos agregado la opción -s (reducir) con una "s" minúscula. Hemos vuelto a agregar la opción -b (copia de seguridad) y la opción -S (sufijo), con una "S" mayúscula.

 sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin 

opción de instalación con la opción de tira -s

Anuncio publicitario

Listar los archivos en /usr/local/bin nos permite comparar el tamaño del archivo ana con su versión de respaldo. El archivo ana se ha reducido a casi un 60% de su tamaño anterior.

 ls -l /usr/local/bin 

ls en el directorio de trabajo

En resumen

El comando de install satisface un uso bastante específico. Para muchas personas, no se usará día tras día, o posiblemente de mes a mes. A pesar de eso, el comando de install es una buena herramienta para familiarizarse y tener en su arsenal de trucos. Para aquellas ocasiones en las que lo necesite, recompensa su curva de aprendizaje con mejoras en eficiencia, simplicidad y simplemente menos pulsaciones de teclas.

RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas