시놀로지 (Synology)에 설치된 테슬라메이트를 자동으로 백업하는 방안에 대해 서술합니다.
백업 파일을 통해 서버장애시 복구하거나, 타 서버로 데이터 이전을 쉽게 할 수 있습니다.
시놀로지 DSM에서는 msmtp나 mutt 같은 패키지를 직접 설치할 수 없으므로, 작업 스케줄러(Task Scheduler)를 사용해야 합니다.
DSM 7.0 을 기준으로 설명합니다.

제어판으로 이동합니다.

작업스케줄러 선택


생성 → 예약된 작업 → 사용자 정의 스크립트 선택

일반탭 : 작업명을 한 눈에 알아볼 수 있게 작성합니다.
사용자는 root로 선택

아래 코드의 내용을 복사하여 “사용자 정의 스크립트"에 넣습니다.
환경 변수 설정에
Container Manager에 있는 Database Container 이름과 USER, DB명, Password를 확인하여 입력해 줍니다.
Container Manager에 있는 Database Container 이름과 USER, DB명, Password를 확인하여 입력해 줍니다.
백업 경로 역시 본인의 시놀로지 환경에 맞추어서 BACKUP_DIR에 경로를 지정해줍니다.
#!/bin/bash
# ===============================================================
# 시놀로지 전용 TeslaMate PostgreSQL 백업 스크립트 (자동 삭제 포함)
# ===============================================================
# 환경 변수 설정
PG_CONTAINER_NAME="teslamate_database_1" # Container Manager에서 확인
PG_USER="teslamate"
PG_DB="teslamate"
PG_PASSWORD="database_password" # docker-compose.yml의 비밀번호
# 백업 경로 및 설정
BACKUP_DIR="/volume1/docker/teslamate_backup"
RETENTION_DAYS=7 # 백업 보관 기간 (일 단위)
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${PG_DB}_${TIMESTAMP}.sql.gz"
FULL_PATH="${BACKUP_DIR}/${BACKUP_FILE}"
LOG_FILE="${BACKUP_DIR}/backup.log"
# 백업 디렉토리 생성
mkdir -p "$BACKUP_DIR"
# 로그 시작
echo "========================================================" | tee -a "$LOG_FILE"
echo "[$(date)] Starting backup for ${PG_DB}..." | tee -a "$LOG_FILE"
# PostgreSQL 백업 실행
docker exec --user postgres -e PGPASSWORD="$PG_PASSWORD" "$PG_CONTAINER_NAME" \
pg_dump -U "$PG_USER" -d "$PG_DB" -F p | gzip > "$FULL_PATH" 2>> "$LOG_FILE"
DUMP_STATUS=$?
if [ $DUMP_STATUS -ne 0 ]; then
ERROR_MSG="[$(date)] ERROR: Backup failed (status: $DUMP_STATUS)"
echo "$ERROR_MSG" | tee -a "$LOG_FILE"
# 실패 시 DSM 알림 전송
/usr/syno/bin/synodsmnotify -c SYNO.SDS.BackupApp.Application @administrators \
"TeslaMate Backup Failed" "$ERROR_MSG"
exit 1
fi
FILE_SIZE=$(du -h "$FULL_PATH" | awk '{print $1}')
SUCCESS_MSG="[$(date)] Backup successful: $FULL_PATH (Size: $FILE_SIZE)"
echo "$SUCCESS_MSG" | tee -a "$LOG_FILE"
echo "[$(date)] Checking for backups older than $RETENTION_DAYS days..." | tee -a "$LOG_FILE"
# find 명령 설명:
# $BACKUP_DIR: 해당 폴더에서
# -name "*.sql.gz": 확장자가 .sql.gz 인 파일만 찾아서 (로그 파일 보호)
# -mtime +$RETENTION_DAYS: 설정된 날짜보다 오래된 파일을
# -print: 로그에 파일명을 남기고
# -delete: 삭제한다
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION_DAYS -print -delete >> "$LOG_FILE" 2>&1
echo "[$(date)] Cleanup completed." | tee -a "$LOG_FILE"
echo "========================================================" | tee -a "$LOG_FILE"
아래는 확인하는 방안입니다.

Container Manager → 프로젝트 → 이미지가 “postgres”(DBMS 입니다) 찾아 이름을 확인합니다.


Container_NAME에 위의 이름을 입력해줍니다.

백업 경로 확인방법

File Station → 저장하고자 하는 디렉토리에 가서 오른쪽 마우스 클릭 → 메뉴바에서 속성을 선택

속성 → 일반탭 → 위치를 확인합니다.

스크립트를 실행하면, 해당 디렉토리에 DB백업파일이 생성됩니다.
이제 지정된 시각에 자동으로 백업이 진행됩니다.

backup.log 파일을 열어보면, 백업 성공여부와 백업파일 사이즈를 알 수 있습니다.
이제 자동으로 시놀로지에 테슬라메이트 데이터를 백업할 수 있습니다.
반응형
'달빛궁전 > 테슬라(차량)' 카테고리의 다른 글
| TeslaMate (테슬라메이트) 데이터 복원 스크립트 (0) | 2025.11.06 |
|---|---|
| TeslaMate (테슬라메이트) 자동백업 스크립트 (0) | 2025.10.27 |
| TeslaMate (테슬라메이트) 자동화 설치 방안 (1) | 2025.10.20 |
| 테슬라 Y를 구매하게된 이야기 - 시작 (0) | 2025.10.03 |