반응형
1) 매일 오전 9시 Flask 서버 자동 재시작
(A) 스크립트 만들기
예: /opt/app/restart_flask.sh
#!/usr/bin/env bash
set -euo pipefail
# ── 한 가지 방식만 골라 쓰세요 ───────────────────────────
# [1] systemd로 관리 중인 경우 (예: gunicorn/uvicorn 서비스)
# sudo systemctl restart my-flask.service
# [2] Supervisor로 관리 중인 경우
# sudo supervisorctl restart my-flask
# [3] Docker Compose로 관리 중인 경우 (프로젝트 디렉터리에서)
# cd /opt/app
# docker compose restart web # 서비스명에 맞게 수정
# ─────────────────────────────────────────────────────────
권한 부여:
sudo mkdir -p /opt/app
sudo tee /opt/app/restart_flask.sh >/dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
# 예: systemd 사용 시
sudo systemctl restart my-flask.service
EOF
sudo chmod +x /opt/app/restart_flask.sh
(B) crontab 등록
crontab -e
아래 한 줄 추가 (표준/에러 로그도 남김):
0 9 * * * /opt/app/restart_flask.sh >> /var/log/restart_flask.log 2>&1
2) 매주 월요일 데이터 백업
(A) 백업 스크립트
예: /opt/backup/weekly_backup.sh
- /data 폴더를 압축해 /backup에 저장 (경로는 환경에 맞게 수정)
- flock으로 중복 실행 방지
- 30일 지난 백업 자동 정리
#!/usr/bin/env bash
set -euo pipefail
LOCKFILE="/var/lock/weekly_backup.lock"
SRC_DIR="/data" # 백업할 경로
DST_DIR="/backup" # 백업 파일 저장 경로
STAMP="$(date +'%Y%m%d_%H%M%S')"
ARCHIVE="${DST_DIR}/data_backup_${STAMP}.tar.gz"
mkdir -p "$DST_DIR"
# 중복 실행 방지
exec 200>"$LOCKFILE"
flock -n 200 || { echo "Another backup is running"; exit 1; }
# 백업 수행
tar -czf "$ARCHIVE" "$SRC_DIR"
# 30일 지난 파일 정리
find "$DST_DIR" -type f -name 'data_backup_*.tar.gz' -mtime +30 -delete
echo "Backup created: $ARCHIVE"
설치/권한:
sudo mkdir -p /opt/backup /backup
sudo tee /opt/backup/weekly_backup.sh >/dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
LOCKFILE="/var/lock/weekly_backup.lock"
SRC_DIR="/data"
DST_DIR="/backup"
STAMP="$(date +'%Y%m%d_%H%M%S')"
ARCHIVE="${DST_DIR}/data_backup_${STAMP}.tar.gz"
mkdir -p "$DST_DIR"
exec 200>"$LOCKFILE"
flock -n 200 || { echo "Another backup is running"; exit 1; }
tar -czf "$ARCHIVE" "$SRC_DIR"
find "$DST_DIR" -type f -name 'data_backup_*.tar.gz' -mtime +30 -delete
echo "Backup created: $ARCHIVE"
EOF
sudo chmod +x /opt/backup/weekly_backup.sh
(B) crontab 등록 (월요일 03:00)
crontab -e
아래 한 줄 추가:
0 3 * * 1 /opt/backup/weekly_backup.sh >> /var/log/weekly_backup.log 2>&1
체크리스트
- 경로(/opt/app, /opt/backup, /data, /backup)와 서비스명(my-flask.service 등)을 환경에 맞게 수정하세요.
- flock이 없다면 util-linux 패키지를 설치하세요(대부분 기본 제공).
- Docker/Compose 사용 중이면 재시작 스크립트에서 해당 부분만 남기고 나머지는 지우세요.
- 크론은 시스템 시간대를 사용합니다(서버 TZ 확인: timedatectl).
반응형
'[======= 지식 저장소 =======]' 카테고리의 다른 글
| 달리기 입문자를 위한 완벽 가이드와 러닝의 놀라운 건강 효과 (0) | 2025.10.19 |
|---|---|
| 조니워커 위스키, 세계가 사랑한 스카치의 상징 (0) | 2025.10.18 |
| Crontab 이 무엇인가? (0) | 2025.10.17 |
| 통화스와프란? 쉽게 이해하는 개념과 실제 사례 (0) | 2025.10.13 |
| 프리미어리그 완벽 정리: 세계 최고의 축구 리그가 만들어낸 전설과 역사 (0) | 2025.10.11 |