사설 서버 운영시 매일매일 백업방법 Feat 오드로이드, 라즈베리파이
지금 현재 웹서버 2대, 백업서버 1대 운용중인데요
웹서버는 모두 SSD 로 운영중이며
백업서버만 HDD 로 운영중입니다
이렇게 백업서버를 HDD 로 운영하는 이유는
SSD가 한번에 뻑가는것을 경험해보니
백업자료 보관은 HDD 로 해야 혹시라도
백업용 HDD 도 이상발견시 최소 복구는 가능하기 때문입니다
이제 각 서버별로 설정하는 법 알려드리겠습니다
위치 : 백업서버 ----------------------------- 백업받을 디렉토리를 새로이 생성합니다 저는 /nas_backup 이라는 디렉토리를 생성했구요 백업시 하위 디렉토리로 아래 스타일로 저장되게 할 것입니다 즉 매일매일 년도별 기준으로 디렉토리를 자동생성하여 서버별 백업을 하는거죠 참고로 웹서버는 odroid-hc4 와 odroid-m1 을 사용중에 있습니다 └── nas_homepage_backup ├── 2025-04-01 │ └── odroid-m1 │ ├── home │ ├── mysql_config │ └── nginx_config └── 2025-04-02 ├── odroid-hc4 │ ├── home │ ├── mysql_config │ └── nginx_config └── odroid-m1 ├── home ├── mysql_config └── nginx_config
그리고 백업을 하다보면 HDD 도 용량크기에 근접할수도 있기에,
최대 n일까지만 저장하고 나머지 자료는 삭제하게 해야 합니다
위치 : 백업서버 파일명 : /nas_backup/cleanup_old_backups.sh ----------------------------- #!/bin/bash # 삭제 대상 경로 TARGET_DIR="/nas_backup/nas_homepage_backup" # 30일 이상 지난 폴더 삭제 find "$TARGET_DIR" -mindepth 1 -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;위치 : 백업서버 파일명 : root 계정에서 crontab -e 로 아래 명령어를 넣어주세요 아래 명령은 새벽 3시 30분에 삭제 명령어를 실행하라는것입니다 -------------------------- 30 3 * * * /nas_backup/cleanup_old_backups.sh >> /nas_backup/cleanup_backup.log 2>&1

이제 웹서버에서 설정하는 법 알려드리겠습니다
소스복사하실때
NAS_IP 에 nas server ip 꼭 적어주시구요
3항에 mysql root 의 비밀번호도 꼭 적어주셔야 합니다
위치 : 웹서버1 파일명 : /nas_backup/cleanup_old_backups.sh ---------------------- #!/bin/bash TODAY=$(date +%F) NAS_USER=nas2 NAS_IP=<나스서버 IP 적어주세요> NAS_PATH="/nas_backup/nas_homepage_backup/$TODAY/odroid-hc4" echo "백업 시작 시간: $(date)" # 1. NAS에 날짜별 디렉토리 생성 ssh $NAS_USER@$NAS_IP "mkdir -p $NAS_PATH/home" # 2. /home 전체 백업 (권한 유지) sudo rsync -az --numeric-ids /home ${NAS_USER}@${NAS_IP}:${NAS_PATH} sudo rsync -az /etc/nginx/ ${NAS_USER}@${NAS_IP}:${NAS_PATH}/nginx_config sudo rsync -az /etc/mysql/ ${NAS_USER}@${NAS_IP}:${NAS_PATH}/mysql_config # 3. MySQL 전체 백업 mysqldump -u root -p'루트암호' --all-databases | gzip > /tmp/db_$TODAY.sql.gz # 4. NAS로 전송 scp /tmp/db_$TODAY.sql.gz ${NAS_USER}@${NAS_IP}:${NAS_PATH}/ # 5. 임시 파일 삭제 rm -f /tmp/db_$TODAY.sql.gz echo "백업 종료 시간: $(date)"
이제 이것 역시 매일매일 자동실행되게 crontab 으로 등록합니다
위치 : 웹서버1 파일명 : root 계정에서 crontab -e 로 아래 명령어를 넣어주세요 이 명령은 매일매일 새벽3시15분에 백업명령을 하라는 것입니다 ----------------------- 15 3 * * * /home/odroid/backup_to_nas.sh >> /home/odroid/backup.log 2>&1
그리고 자동화 하기에 앞서서 딱 1번만 아래 명령 실행해주세요
그래야 자동백업 프로그램이 nas서버의 암호를 물어보지 않고 ssh로 접속될 수 있게 합니다
ssh-keygen -t rsa ssh-copy-id nas서버아이디@nas서버아이피 <= 이걸 실행하면 나스서버 아이피에 접속하면서 입력된 아이디에 대한 암호를 물어보는데 정상적인 암호 입력하면 그게 끝입니다^^ 별 이상 없으면 백업프로그램이 알아서 혼자 백업 작업 잘 합니다
이상이구요
백업 로직 필요하신 분들에게 많은 도움이 되면 좋겠습니다
감사합니다!