Prompt 1:
“Tengo en un servidor Linux un directorio que se llama /bk_datos. Quiero que de otro directorio de mi host llamado /datos_2024 se haga una copia de seguridad total los sábados a las 18:30pm y una copia incremental de Lunes a Viernes a las 22:00pm en el directorio /bk_datos Quiero que uses el comando tar y que comprimas con xz”.
Respuesta 1:
#!/bin/bash # Ruta del directorio de origen source_directory="/datos_2024" # Ruta del directorio de destino backup_directory="/bk_datos" # Nombre del archivo de copia de seguridad backup_file="$backup_directory/backup_$(date +\%Y-\%m-\%d_%H-\%M).tar.xz" # Verificar si es sábado if [ "$(date +\%u)" -eq 6 ]; then # Copia de seguridad total los sábados a las 18:30 tar --listed-incremental="$backup_directory/incremental.snar" -cJf "$backup_file" "$source_directory" echo "Copia de seguridad total realizada el $(date +\%Y-\%m-\%d_%H-\%M)." else # Copia de seguridad incremental de Lunes a Viernes a las 22:00 tar --listed-incremental="$backup_directory/incremental.snar" -cJf "$backup_file" "$source_directory" echo "Copia de seguridad incremental realizada el $(date +\%Y-\%m-\%d_%H-\%M)." fi ……………………………………… chmod +x backup_script.sh # Copia total los sábados a las 18:30 30 18 * * 6 /ruta/al/backup_script.sh # Copia incremental de lunes a viernes a las 22:00 0 22 * * 1-5 /ruta/al/backup_script.sh
Referencia: https://juncotic.com/tar-backups-incrementales-gnu-linux/
Solo me queda añadir la lógica para que el sábado “expulse” el snapshot y haga un backup total puro y duro creando el fichero de snapshot incremental .snar nuevecito para los subsiguientes incrementales de lunes a viernes.
Conclusión: ChatGPT Me ha ayudado mucho no, ¡muchísimo! pero hay veces que el remate lo tiene que hacer el “ser humano”.
Prompt 2:
“Tengo un partición montada en un directorio que se llama /proyecto_seal y tengo tres usuarios user01, user02 y user03. Quiero que los tres usuarios tengan acceso a este directorio. También quiero una política de cuotas con un soft limit de 2G y periodo de gracia de 3 dias y una hard limit de 5G. Otorga al directorio el permiso apropiado para que ningún usuario de esto tres pueda borrar lo que han creado los otros”
Respuesta 2:
# Asegúrate de que el grupo exista, si no, créalo sudo groupadd proyecto_seal # Añade usuarios al grupo sudo usermod -aG proyecto_seal user01 sudo usermod -aG proyecto_seal user02 sudo usermod -aG proyecto_seal user03 # Cambia el propietario y grupo del directorio sudo chown :proyecto_seal /proyecto_seal # Establece permisos para el propietario (dueño del directorio) sudo chmod 1770 /proyecto_seal # Permite que los miembros del grupo tengan acceso total sudo chmod g+rwx /proyecto_seal # Restringe el acceso a otros usuarios (no propietarios ni del grupo) sudo chmod o-rwx /proyecto_seal sudo apt-get install quota vi /etc/fstab UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /proyecto_seal ext4 defaults,usrquota,grpquota 0 2 sudo mount -o remount /proyecto_seal sudo quotacheck -cug /proyecto_seal sudo edquota -u user01 sudo edquota -u user02 sudo edquota -u user03
Prompt 3:
Tengo un fichero de texto con paths completos de directorios, algunos caminos empiezan por /usr/bin/local/ y quiero en estos que empiezan por /usr/bin/local/ y solo en estos eliminar /usr/bin/local/ ¿Me creas un script para realizar esta tarea?
Respuesta 3:
#!/bin/bash # Verificar si se proporcionó un archivo como argumento if [ -z "$1" ]; then echo "Uso: $0 archivo" exit 1 fi archivo="$1" # Verificar si el archivo existe if [ ! -f "$archivo" ]; then echo "El archivo '$archivo' no existe." exit 1 fi # Crear un archivo temporal para almacenar los resultados archivo_temporal=$(mktemp) # Procesar el archivo línea por línea while IFS= read -r linea; do # Verificar si la línea comienza con /us
Published on 1 year, 6 months ago
If you like Podbriefly.com, please consider donating to support the ongoing development.
Donate