«SAR o no SAR» con LinuxDoesMatter y ChatGPT

Поділитися
Вставка
  • Опубліковано 8 лют 2025
  • 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: juncotic.com/t...
    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 /usr/bin/local/
    if [[ "$linea" == "/usr/bin/local/"* ]]; then
    Eliminar /usr/bin/local/ de la línea
    nueva_linea="${linea#/usr/bin/local/}"
    echo "$nueva_linea" >> "$archivo_temporal"
    else
    Conservar la línea tal cual si no comienza con /usr/bin/local/
    echo "$linea" >> "$archivo_temporal"
    fi
    done < "$archivo"
    Sobrescribir el archivo original con los resultados
    mv "$archivo_temporal" "$archivo"
    echo "Proceso completado. Se ha modificado el archivo '$archivo'."
    Y vamos con SAR…
    sar es una herramienta de monitorización de recursos en sistemas basados en Unix, como Linux. El nombre «sar» proviene de «System Activity Reporter». Esta utilidad permite recopilar, informar y analizar datos sobre la actividad del sistema, incluyendo el uso de CPU, memoria, E/S (entrada/salida) y otros recursos.
    El paquete sar generalmente viene incluido en el conjunto de herramientas de sysstat. Para utilizar sar en Linux, debes asegurarte de que sysstat esté instalado.
    Con mucha seguridad el paquete systat estará instalado pero si no procedemos como siempre
    Para Centos/Redhat sería algo como esto… yum o dnf
    yum install sysstat -y
    systemctl start sysstat.service
    systemctl ena...

КОМЕНТАРІ •