홈 › 리눅스 운영 › 12 / 13

백업·복구 (설정·릴리스·DB 덤프)

섹션 7진행 0 / 13

4. 응용 변형 예제

4.1 설정만 빠르게

bash
cp -rp /opt/myapp/conf "/opt/myapp/conf.bak.$(date +%Y%m%d_%H%M%S)"

설정을 고치기 직전에 한 줄입니다. 전체 백업과 별개로 "방금 전" 으로 돌아가는 가장 빠른 방법입니다.

4.2 여러 앱 한 번에

bash
for app in orderapp payapp; do
  APP_HOME=/opt/$app BACKUP_DIR=/backup/$app bash /opt/tools/backup.sh run
done

스크립트가 환경 변수로 경로를 받으므로 앱마다 변수만 바꿔 같은 파일을 씁니다. 운영 묶음 08 의 ${VAR:-기본} 설계가 여기서 쓰입니다.

4.3 원격 보관과 확인

bash
rsync -az /backup/myapp/ backup-host:/backup/app1/
ssh backup-host 'ls -1t /backup/app1/*.tgz | head -n 1; df -h /backup | tail -n 1'

보낸 뒤 원격의 최신 파일과 남은 용량을 함께 봅니다. 백업 서버 디스크가 차서 며칠째 실패하는 것을 이 줄이 알려 줍니다.

4.4 nginx·유닛 파일 포함

bash
tar czf "/backup/etc-$(date +%F).tgz" /etc/nginx/conf.d /etc/systemd/system/myapp.service /etc/cron.d/myapp-cleanup /etc/logrotate.d/myapp

앱 폴더 밖의 설정입니다. 서버 재구축 때 이 파일들이 없으면 운영 묶음 03·05·06 을 처음부터 다시 합니다.

4.5 백업 상태 점검 한 줄

bash
f=$(ls -1t /backup/myapp/myapp-*.tgz | head -n 1); [ $(( ($(date +%s) - $(stat -c %Y "$f")) / 3600 )) -lt 26 ] && echo "최근 백업 OK: $f" || echo "경고: 26시간 넘음"

최신 백업이 26시간 안이면 정상입니다. 10 레슨의 점검 스크립트에 넣어 매월 확인합니다.