copio_cosas_collar_local.sh
copio_cosas_collar_local.sh
copio_cosas_collar_local.sh
Este script sincroniza varias rutas origen locales hacia un destino local de backup usando rsync y log diario.
Ejecucion programada
30 1 * * 1-5 /ruta/origen/scripts/copio_cosas_collar_local.sh
Flujo
- Inicializa log diario.
- Sincroniza imagenes desde ruta origen a destino multimedia.
- Sincroniza musica desde ruta origen a destino multimedia.
- Sincroniza videos desde ruta origen a destino multimedia.
- Sincroniza documentos desde ruta origen a destino multimedia.
- Sincroniza descargas, herramientas, configuracion y site web hacia destino de backup.
- Sale con codigos diferentes segun el bloque que falle.
Version parametrizada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env bash
set -euo pipefail
LOG="/var/log/backup_local_$(date +%Y%m%d).log"
DESTINO_BASE="/ruta/destino/backup"
declare -A sincronizaciones=(
["/ruta/origen/imagenes"]="$DESTINO_BASE/multimedia/imagenes"
["/ruta/origen/musica"]="$DESTINO_BASE/multimedia/musica"
["/ruta/origen/videos"]="$DESTINO_BASE/multimedia/videos"
["/ruta/origen/documentos"]="$DESTINO_BASE/multimedia/documentos"
["/ruta/origen/descargas"]="$DESTINO_BASE/descargas"
["/ruta/origen/tools"]="$DESTINO_BASE/tools"
["/ruta/origen/etc"]="$DESTINO_BASE/etc"
["/ruta/origen/site-web"]="$DESTINO_BASE/site-web"
)
for origen in "${!sincronizaciones[@]}"; do
destino="${sincronizaciones[$origen]}"
printf '[%s] %s -> %s\n' "$(date --iso-8601=seconds)" "$origen" "$destino" >> "$LOG"
rsync -avh --delete "$origen/" "$destino/" >> "$LOG" 2>&1
done
Riesgos y mejoras
- Usar arrays reduce anidamiento de
if. --dry-runes recomendable para probar cambios.- Las rutas origen/destino deben estar entrecomilladas.
- Si se usa
--delete, confirmar que el destino es correcto.
This post is licensed under CC BY 4.0 by the author.