Creación de directorios mediante Script

Creación de directorios mediante Script

En ocasiones seguro te has visto en la necesidad de crear una plantilla de ciertos directorios que tienes en tu ordenador o en tu trabajo. No quieres copiar todo lo que tienes sino solo los directorios que contiene.

Sería algo engorroso tener que ir copiando los nombres e ir creando el árbol de directorios tal cual lo tienes, ya sea para traer información nueva y que sea solo copiarla, o simplemente para tener una plantilla.

¡Nada difícil! En unos pocos pasos tendrás todo listo.

En mi caso lo aré en el directorio de audiovisuales donde tengo música y videos clips

1- Lo primero es realizar un reconocimiento de todo lo que tengo y copiar sus nombres en un documento de texto .txt

find /home/admin/audiovisuales/ -type d > directorios.txt

2- Lo segundo es leer el documento .txt y crear los directorios

xargs -I{} mkdir -p "{}" < directorios.txt

¡Listo!

Ahora les dejo un script completo que uso en mi día a día, para hacer una plantilla que cambia todas las noches.

#!/bin/bash
# Lugar en el que se encuentra almacenado todo el contenido.
ruta="/home/admin/audiovisuales/HDD_WD/"
# Moveré aquí el archivo .txt y crearé la plantilla, de aquí lo elimino todo.
rutam="/home/sftpserver/audiovisuales/zplantilla/"
# Sitio donde estará publicada la plantilla para los usuarios autorizados.
shared="/home/sftpserver/audiovisuales/"

# Ejecución de la creación de la plantilla.
cd $ruta
find Audiovisuales/ -type d > dir.txt
mv $ruta/dir.txt $rutam
cd $rutam
xargs -I{} mkdir -p "{}" < dir.txt
mv $rutam/Audiovisuales/* $shared

# Eliminando archivos temporales.
rm -r $rutam/Audiovisuales
rm -r $rutam/dir.txt

exit

Lo podemos añadir al cron para que se ejecute todas las noches a las 5:35 A.M.

sudo nano /etc/crontab
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
35 5    * * *   root    /home/admin/creardir.sh

También podríamos eliminar los directorios que se encuentren sin nada, para que nos quede más limpio a la hora de realizar la copia, para ello podemos usar el siguiente script

#!/bin/bash

# Directorio donde deben quedar los que se encuentren sin nada
dir=/home/sftpserver/audiovisuales/
cd $dir

# Define la ruta inicial, puede ser cambiada por cualquier otra ruta que necesites
DIRECTORIO_INICIAL="${1:-.}"

# Encuentra y elimina los directorios vacíos de manera recursiva
find "$DIRECTORIO_INICIAL" -type d -empty -delete

echo "Directorios vacíos eliminados"

Espero les pueda ser de ayuda como lo ha sido para mí. See you later!

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

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