1

🍎Crea un respaldo de todas tus imagenes en linux.

Hola yo soy Miguel, y en este tutorial te llevaré paso a paso para crear dos shell scripts que te ayudaran a recopilar todas las fotos almacenadas en linux. El primer shell script copiará las imágenes en un nuevo directorio, y el segundo shell script comprimirá la carpeta junto con las imágenes.
.

Necesitas:

  1. Terminal con bash, o zsh, o variantes como shell.
  2. Conceptos básicos de linux
  3. Comandos básicos de terminal
  4. Ganas de aprender

.

Bueno comencemos…

Necesitamos crear dos archivos con la extension sh, para eso ejecutamos:

touch cpimg.sh tarimg.sh

.
Ahora debemos otorgar permisos de ejecución a ambos archivos. A mi preferencia únicamente mi usuario tendrá tal permiso, y para lograrlo ejecutamos el siguiente comando:

chmod 766 cpimg.sh tarimg.sh

.

Primero escribiremos el código de cpimg.sh

.
Eres libre de usar tu editor de texto o código preferido, en mi caso yo usé nvim. Para ejecutar nvim en el archivo ejecutamos:

nvim cpimg.sh

.
Una vez nos encontremos editando el archivo es importante permitir a la terminal conocer que el archivo es un binario, por lo que debemos añadir la siguiente línea de código al comienzo del archivo:

#!/bin/bash

.
Es importante que nuestros scripts impriman mensajes conforme se van ejecutando los comandos, por lo que iniciaremos mostrando un mensaje que indique el inicio de ejecución del script:

echo"Inicio de búsqueda y copia de imágenes..." &&

.
Creamos un directorio para guardar las imágenes una vez sean localizadas, y también un mensaje indicando la creación del directorio:

mkdir -p my-images &&

echo "Directorio my-images creado" &&

.
Ahora iniciaremos la búsqueda de las imágenes con el comando find. Yo únicamente he indicado buscar imágenes con las siguientes extensiones:

  • png
  • jpg
  • jpeg
  • svg
  • raw
  • gif
  • heif
  • mbp
  • tiff
  • psd

.
Entonces añadimos el siguiente comando a nuestro script, junto con un mensaje de inicio y de finalización de la búsqueda y copia de imágenes con find y exec de parámetro:

echo "Buscando y copiando imágenes a directorio creado..." &&

find $(pwd) -type f \( -name"*.png" -o -name"*.jpg" -o -name"*.jpeg" -o -name"*.svg" -o -name"*.raw" -o -name"*.gif" -o -name"*.heif" -o -name"*.mbp" -o -name"*.tiff" -o -name"*.psd" \) -exec cp {} ./my-images/ \; &&

echo "Imágenes guardadas en el directorio"

.
En el comando find, donde se indica a partir de que ruta ejecutar el comando he usado $(pwd), lo que permite que su ejecución sea flexible. Cuando llames a la ejecución del script entonces tomará en cuenta la ruta en la que te encuentras posicionado en el momento de la ejecución y comenzará la búsqueda de las imágenes a partir de ese directorio. Además recuerda que la búsqueda es recursiva, lo que significa que buscará los archivos también dentro de subdirectorios y en subdirectorios dentro de estos.
.
Finalmente agregamos un mensaje de finalización de nuestro shell script:

echo"Copia de imágenes finalizada"

.
Guardamos y salimos de nvim o vim presionando la tecla ESC y escribiendo :wq o también :x
.
Listo, eso ha sido todo por parte de la recopilación y copia de imágenes a nuestro directorio creado. Ahora pasaremos a la creación de nuestro segundo shell script que además de realizar lo mismo que nuestro archivo cpimg.sh también comprimirá la carpeta junto con las imágenes como su contenido.
.
.
.

Programando nuestro segundo shell script tarimg.sh

.
Reutilizaremos el código de cpimg.sh, por lo que podemos fácilmente copiar y pegar todo su contenido en tarimg.sh. No te preocupes, yo te ahorraré ese paso, aquí tienes mi código de cpimg.sh, tiene comentarios que no añadí al tutorial. Copia y pega en el archivo tarimg.sh:

#!/bin/bash

#Mensaje de inicioecho"Inicio de búsqueda y copia de imágenes..." &&




#Creamos directorio para almacenar la copia de imágenesecho"Creando directorio para guardar imágenes..." &&

mkdir -p my-images &&

echo"Directorio my-images creado" &&



#Iniciamos búsqueda de imágenes y copiamos a la ruta actualecho"Buscando y copiando imágenes a directorio creado..." &&

find $(pwd) -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" -o -name "*.svg" -o -name "*.raw" -o -name "*.gif" -o -name "*.heif" -o -name "*.mbp" -o -name "*.tiff" -o -name "*.psd" \) -exec cp {} ./my-images/ \; &&

echo"Imágenes guardadas en directorio"#Mensaje de finalizaciónecho"Copia de imágenes finalizada"

.
Muy bien, ahora removemos el último comando echo que indica la finalización de copia de imágenes:

#Mensaje de finalizaciónecho"Copia de imágenes finalizada"

.
Indicaremos la compresión del directorio y sus imágenes con el siguiente comando:

echo "Comprimiendo imágenes" &&

tar -czvf my-images.tar.gz ./my-images &&

echo "Se comprimió el directorio exitosamente" &&

.
Por último eliminamos el directorio y su contenido. Si deseas conservar la carpeta y su versión comprimida a la vez entonces ignora este paso.
.
Para eliminar el directorio y su contenido usamos el siguiente comando junto con otro mensaje que indique su ejecución:

echo"Removiendo directorio con imágenes" &&

rm -r $(pwd)/my-images &&

.
Por último agregamos el mensaje de finalización del script tarimg.sh:

echo"Compresión finalizada exitosamente"

.
Por último eliminamos el directorio y su contenido. Si deseas conservar la carpeta y su versión comprimida a la vez entonces ignora este paso.
.
Para eliminar el directorio y su contenido usamos el siguiente comando junto con otro mensaje que indique su ejecución:

echo"Removiendo directorio con imágenes" &&

rm -r $(pwd)/my-images &&

.
Por último agregamos el mensaje de finalización del script tarimg.sh, y guardamos los cambios en el archivo:

echo"Compresión finalizada exitosamente"

.
Puedes descomprimir el archivo con el comando:

tar -xzvf my-images.tar.gz

.

…-…-…-…-…-…-…-…


Así de fácil hemos creado nuestros scripts 😁

.
Lo último que haremos será agregar estos archivos a nuestra ruta de binarios, esto nos permitirá ejecutar los archivos como comandos en casi cualquier ruta.
.
Si utilizas bash deberás registrar los binarios en el archivo .bashrc o en el caso de zsh será en .zshrc, estos archivos los encuentras en tu directorio $HOME, para moverte a ese directorio ejecuta cualquiera de los siguientes comandos:

cd $HOME

o simplemente:

cd

.
Una vez encontrandote posicionado en el directorio home, podrás visualizar el directorio oculto source de tu shell listado con el siguiente comando:

ls -la

.
Habiendo confirmado la existencia de .bashrc o .zshrc debemos editarlo.
.
Aquí tienes dos opciones para llamar a los scripts a ejecutarse en la terminal:
a) Puedes crear un alias.
b) Agregar la ruta al $PATH de binarios.
.
.
A) Crear Alias
.
Al final del archivo añade la siguiente línea:

aliascpimg="/home/tu-usuario/ruta-de-tus-shell-scripts/cpimg.sh"aliastarimg="/home/tu-usuario/ruta-de-tus-shell-scripts/tarimg.sh"

✳️ Puedes renombrar el nombre de los alias a tu gusto.
✴️ Si quieres obtener la ruta de tus shell scripts puedes abrir otra terminal, luego posicionate en el directorio de tus shell scrips y ejecuta el comando: pwd, copia la ruta y utilizala en la creación de tus alias.
.
Ahora debes guardar los cambios en el archivo, y finalmente reinicia la terminal. Puedes simplemente cerrar y volver a abrir la terminal. También puedes ejecutar bash o source bash en el caso de tener bash, o si tienes zsh ejecuta zsh o source zsh.

.
.
B) Agregar la ruta al $PATH de binarios
.
Al final del archivo que carga tu shell agrega la siguiente línea:

PATH=$PATH:/home/tu-usuario/ruta-de-tus-shell-scripts

✴️Después de los dos puntos agrega la ruta de tus scripts, dicha ruta recuerda que la puedes obtener ejecutando el comando pwd en el directorio de los scripts.
.
Guarda los cambios y reinicia tu shell.
.

🟣Si agregaste los scripts mediante aliases entonces solo necesitas ejecutar el nombre del alias para que se ejecute el script que desees.
.
🟡Si agregaste los scripts a la ruta de binarios deberás llamarles junto con su extensión .sh, por ejemplo tarimg.sh o cpimg.sh
.
.
.
…-…-…-…-…-…-…-…


Eso ha sido todo vaquer@ 🤠

Si necesitas ayuda puedes apoyarte con mis shell scripts, los cuales he subido a un repositorio en Github, puedes acceder al repositorio dando click al siguiente enlace:

🚀Mi repositorio

¡Envía tu pull request!
Me haría muy feliz enriquecer el repositorio juntos.

.
🎉Muchas gracias por haber llegado hasta el final.
📝 Nunca pares de aprender.

Escribe tu comentario
+ 2