«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...