52 lines
1.3 KiB
Bash
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
|