mirror of
https://gitverse.ru/kpa39l/netbox.git
synced 2026-09-29 09:55:11 +00:00
First working version
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# Скрипт резервного копирования NetBox Docker с отправкой на Яндекс.Диск
|
||||
|
||||
BACKUP_DIR="/opt/netbox/backups"
|
||||
YADISK_MOUNT="/opt/netbox/yadisk"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
# Создаем папку для временных бэкапов (с правами текущего пользователя)
|
||||
mkdir -p ${BACKUP_DIR}
|
||||
|
||||
echo "🔄 [$(date)] Начинаем резервное копирование NetBox..."
|
||||
|
||||
# Проверяем, примонтирован ли Яндекс.Диск
|
||||
if ! mountpoint -q ${YADISK_MOUNT}; then
|
||||
echo " ❌ ОШИБКА: Яндекс.Диск не примонтирован!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Создаём папку для бэкапов на Яндекс.Диске (если её нет)
|
||||
mkdir -p ${YADISK_MOUNT}/netbox-backups 2>/dev/null
|
||||
|
||||
# 1. Бэкап базы данных PostgreSQL
|
||||
echo " → Бэкап базы данных..."
|
||||
cd /opt/netbox
|
||||
docker compose exec -T postgres sh -c 'pg_dump -cU $POSTGRES_USER $POSTGRES_DB' | gzip > ${BACKUP_DIR}/netbox_db_${DATE}.sql.gz
|
||||
|
||||
if [ $? -eq 0 ] && [ -s ${BACKUP_DIR}/netbox_db_${DATE}.sql.gz ]; then
|
||||
echo " ✅ База данных: $(du -h ${BACKUP_DIR}/netbox_db_${DATE}.sql.gz | cut -f1)"
|
||||
else
|
||||
echo " ❌ Ошибка бэкапа базы данных!"
|
||||
fi
|
||||
|
||||
# 2. Бэкап медиа-файлов
|
||||
echo " → Бэкап медиа-файлов..."
|
||||
docker compose exec -T netbox tar czf - -C /opt/netbox/netbox/media . 2>/dev/null > ${BACKUP_DIR}/netbox_media_${DATE}.tar.gz
|
||||
|
||||
if [ -s ${BACKUP_DIR}/netbox_media_${DATE}.tar.gz ]; then
|
||||
echo " ✅ Медиа-файлы: $(du -h ${BACKUP_DIR}/netbox_media_${DATE}.tar.gz | cut -f1)"
|
||||
fi
|
||||
|
||||
# 3. Бэкап .env файлов
|
||||
echo " → Бэкап .env файлов..."
|
||||
tar czf ${BACKUP_DIR}/netbox_env_${DATE}.tar.gz -C /opt/netbox env/ 2>/dev/null
|
||||
|
||||
if [ -s ${BACKUP_DIR}/netbox_env_${DATE}.tar.gz ]; then
|
||||
echo " ✅ .env файлы: $(du -h ${BACKUP_DIR}/netbox_env_${DATE}.tar.gz | cut -f1)"
|
||||
fi
|
||||
|
||||
# 4. Копирование на Яндекс.Диск
|
||||
echo "☁️ Копирование на Яндекс.Диск..."
|
||||
|
||||
# Копируем файлы, если они существуют
|
||||
for file in netbox_db_${DATE}.sql.gz netbox_media_${DATE}.tar.gz netbox_env_${DATE}.tar.gz; do
|
||||
if [ -f ${BACKUP_DIR}/${file} ]; then
|
||||
cp ${BACKUP_DIR}/${file} ${YADISK_MOUNT}/netbox-backups/
|
||||
echo " ✅ ${file}"
|
||||
fi
|
||||
done
|
||||
|
||||
# 5. Очистка старых бэкапов
|
||||
# Локально: оставляем 7 дней
|
||||
find ${BACKUP_DIR} -type f -name "netbox_*" -mtime +7 -delete 2>/dev/null
|
||||
|
||||
# На Яндекс.Диске: оставляем 30 дней
|
||||
find ${YADISK_MOUNT}/netbox-backups -type f -name "netbox_*" -mtime +30 -delete 2>/dev/null
|
||||
|
||||
echo "✅ [$(date)] Резервное копирование завершено!"
|
||||
|
||||
# Показываем список созданных бэкапов
|
||||
echo ""
|
||||
echo "📊 Созданные бэкапы:"
|
||||
ls -lh ${BACKUP_DIR}/netbox_*_${DATE}.* 2>/dev/null || echo " (нет файлов)"
|
||||
Reference in New Issue
Block a user