Files
2026-02-14 15:08:59 -06:00

52 lines
1.3 KiB
Bash

#!/bin/bash
set -euo pipefail
# Declarar varables
dir_disk=("/dev/nvme0n1p3" "/dev/bcache0")
dir_temp=("/tmp/root" "/tmp/srv")
name_snapshot=$(date +"%m%d%Y")
#Montar rutas
for i in "${!dir_disk[@]}"; do
disk_origen="${dir_disk[$i]}"
dir_backup="${dir_temp[$i]}"
dir_snapshot="$dir_backup/snapshot/daily"
# Crear directrio y montar disco
mkdir -p "$dir_backup"
mount "$disk_origen" "$dir_backup"
# Verificar que existan rutas, caso contrario crearlas
[ -d "$dir_snapshot" ] || mkdir -p "$dir_snapshot"
# Hacer snapshot
if [ $i -eq 0 ]; then
btrfs subvolume snapshot / "$dir_snapshot/$name_snapshot"
else
btrfs subvolume snapshot /srv "$dir_snapshot/$name_snapshot"
fi
# Desmontar rutas
readarray -t snapshots < <(ls -1 "$dir_snapshot" | sort)
total=${#snapshots[@]}
if (( total > 3 )); then
borrar=$(( total - 3 ))
for (( contador=0; contador<borrar; contador++ )); do
echo "Eliminando snapshot: ${snapshots[$contador]}"
btrfs subvolume delete "$dir_snapshot/${snapshots[$contador]}"
done
fi
#Desmontar la ruta
umount "$dir_backup"
mount | grep btrfs | grep "$dir_backup" || echo "Se desmonto $dir_backup"
rmdir "$dir_backup"
done