repositorio iniciado
This commit is contained in:
Executable
+104
@@ -0,0 +1,104 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de backup para Matrix + Element
|
||||
set -e
|
||||
|
||||
# Colores
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
# Configuración
|
||||
BACKUP_DIR="./backups"
|
||||
DATE=$(date +"%Y%m%d_%H%M%S")
|
||||
BACKUP_NAME="matrix_backup_$DATE"
|
||||
|
||||
echo -e "${BLUE}💾 Iniciando backup de Matrix...${NC}"
|
||||
|
||||
# Crear directorio de backup
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo -e "${BLUE}📁 Creando directorio de backup: $BACKUP_NAME${NC}"
|
||||
mkdir -p "$BACKUP_DIR/$BACKUP_NAME"
|
||||
|
||||
# Backup de configuraciones
|
||||
echo -e "${BLUE}⚙️ Respaldando configuraciones...${NC}"
|
||||
cp docker-compose.yml "$BACKUP_DIR/$BACKUP_NAME/"
|
||||
cp element-config.json "$BACKUP_DIR/$BACKUP_NAME/"
|
||||
cp -r configs "$BACKUP_DIR/$BACKUP_NAME/" 2>/dev/null || true
|
||||
|
||||
# Backup de base de datos PostgreSQL
|
||||
echo -e "${BLUE}🗄️ Respaldando base de datos...${NC}"
|
||||
if docker ps | grep -q element_matrix_chat-postgres-1; then
|
||||
docker exec element_matrix_chat-postgres-1 pg_dump -U synapse synapse > "$BACKUP_DIR/$BACKUP_NAME/database.sql"
|
||||
echo -e "${GREEN}✅ Base de datos respaldada${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠️ PostgreSQL no está ejecutándose, saltando backup de BD${NC}"
|
||||
fi
|
||||
|
||||
# Backup de datos de Synapse (excluyendo media store por tamaño)
|
||||
echo -e "${BLUE}📋 Respaldando configuración de Synapse...${NC}"
|
||||
if [ -d synapse3 ]; then
|
||||
mkdir -p "$BACKUP_DIR/$BACKUP_NAME/synapse_config"
|
||||
cp synapse3/homeserver.yaml "$BACKUP_DIR/$BACKUP_NAME/synapse_config/" 2>/dev/null || true
|
||||
cp synapse3/localhost.log.config "$BACKUP_DIR/$BACKUP_NAME/synapse_config/" 2>/dev/null || true
|
||||
cp synapse3/localhost.signing.key "$BACKUP_DIR/$BACKUP_NAME/synapse_config/" 2>/dev/null || true
|
||||
cp -r synapse3/appservices "$BACKUP_DIR/$BACKUP_NAME/synapse_config/" 2>/dev/null || true
|
||||
echo -e "${GREEN}✅ Configuración de Synapse respaldada${NC}"
|
||||
fi
|
||||
|
||||
# Crear archivo de información del backup
|
||||
echo -e "${BLUE}📄 Creando archivo de información...${NC}"
|
||||
cat > "$BACKUP_DIR/$BACKUP_NAME/backup_info.txt" << EOF
|
||||
Matrix + Element Backup
|
||||
======================
|
||||
Fecha: $(date)
|
||||
Versión Docker Compose: $(docker-compose --version)
|
||||
Contenedores activos:
|
||||
$(docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}")
|
||||
|
||||
Archivos incluidos:
|
||||
- docker-compose.yml
|
||||
- element-config.json
|
||||
- synapse_config/ (homeserver.yaml, claves, etc.)
|
||||
- database.sql (dump de PostgreSQL)
|
||||
|
||||
NO incluidos (por tamaño):
|
||||
- media_store/
|
||||
- postgresdata/
|
||||
|
||||
Para restaurar:
|
||||
1. Restaurar archivos de configuración
|
||||
2. docker-compose up -d postgres
|
||||
3. docker exec -i element_matrix_chat-postgres-1 psql -U synapse synapse < database.sql
|
||||
4. docker-compose up -d
|
||||
EOF
|
||||
|
||||
# Comprimir backup
|
||||
echo -e "${BLUE}🗜️ Comprimiendo backup...${NC}"
|
||||
cd "$BACKUP_DIR"
|
||||
tar -czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME"
|
||||
rm -rf "$BACKUP_NAME"
|
||||
cd ..
|
||||
|
||||
# Información final
|
||||
BACKUP_SIZE=$(du -h "$BACKUP_DIR/${BACKUP_NAME}.tar.gz" | cut -f1)
|
||||
echo
|
||||
echo -e "${GREEN}🎉 Backup completado exitosamente${NC}"
|
||||
echo -e "${BLUE}📍 Información del backup:${NC}"
|
||||
echo -e " • Archivo: ${GREEN}$BACKUP_DIR/${BACKUP_NAME}.tar.gz${NC}"
|
||||
echo -e " • Tamaño: ${GREEN}$BACKUP_SIZE${NC}"
|
||||
echo -e " • Fecha: ${GREEN}$(date)${NC}"
|
||||
echo
|
||||
echo -e "${BLUE}💡 Para restaurar:${NC}"
|
||||
echo -e " tar -xzf $BACKUP_DIR/${BACKUP_NAME}.tar.gz"
|
||||
echo -e " # Seguir instrucciones en backup_info.txt"
|
||||
|
||||
# Limpiar backups antiguos (mantener últimos 5)
|
||||
echo -e "${BLUE}🧹 Limpiando backups antiguos...${NC}"
|
||||
cd "$BACKUP_DIR"
|
||||
ls -t matrix_backup_*.tar.gz | tail -n +6 | xargs rm -f 2>/dev/null || true
|
||||
REMAINING=$(ls matrix_backup_*.tar.gz 2>/dev/null | wc -l)
|
||||
echo -e "${GREEN}✅ Manteniendo $REMAINING backups${NC}"
|
||||
Reference in New Issue
Block a user