2015년 3월 23일 월요일

NAS에서 데이터 백업

예전에 시놀로지 사용자 모임 까페에 게시했던 글을 조금 수정하여 포스팅 한다.
내용은 NAS에서 sync와 작업스케줄러를 이용하여 NAS의 데이터를 외장하드로 백업하는 과정이다.

시놀로지 제품 위주로 작성이 되어 있으며 큐냅에서 다른 부분은 첨언을 하였다.
find 명령어의 경우 QNAP의 기본 명령어는 exec가 먹히지 않으므로 opware ipkg를 통해 따로 설치를 하였다.

# 구성방법
- 1베이 제품을 사용하는지라 외장하드 연결 후 중요데이터만 주기적으로 백업되도록 설정 하였습니다.
- 한주에 한번 mysql DB를 덤프 한 후 이전 덤프파일 압축 및 rsync를 통하여 외장하드로 백업을 하게 됩니다.
- mysql을 덤프하는 이유는 맨티스나 개인적으로 만든 웹서비스의 DB를 mysql을 사용하기 때문에 같이 백업되도록 하였습니다.
# 백업 스크립트 내용



# 스크립트 내용 설명
1. mysql DB 덤프
Synol : /usr/syno/mysql/bin/mysqldump -u 계정 -p비밀번호 DB이름 > /volume1/SVN/database_backup/덤프파일명.sql
QNAP : /share/CACHEDEV1_DATA/.qpkg/qmysql/mysql/bin/mysqldump -u 계정 -p비밀번호 --max_allowed_packet=1024M DB이름 > /share/Dev/Database_backup/덤프파일명.sql
스크립트에서는 파일명 생성시 덤프 뜨는 날짜가 파일명에 기입되도록 하였습니다.
2. SQL 파일 압축.
Synol : find /volume1/SVN/database_backup/*.sql -mtime +0 -type f -exec gzip {} \;
QNAP : /opt/bin/find /share/Dev/Database_backup/*.sql -type f -mtime 0 -exec gzip {} \;
생성한 덤프파일을 압축하도록 합니다.
find의 -mtime 옵션을 이용하여 특정이간 이전에 내용이 변경된 파일을 찾아 -exec 옵션을 이용하여 압축을 하게 됩니다.
3. rsync
rsync -avru --delete /volume1/SVN/ /volumeUSB1/usbshare/SVN
rsync를 이용하여 외장하드로 백업합니다.
--delete 옵션을 이용하여 NAS에 없는 파일은 외장하드에서도 삭제하도록 하였습니다.

# 스크립트 파일 업로드 및 권한 설정


스크립트 파일을 생성하였다면 파일을 NAS에 업로드 시킵니다. (윈도우의 메모장에서 작성하여도 됩니다.)
업로드 시킨 스크립트 파일의 소유자와 권한을 변경하도록 합니다.
리눅스에 익숙한 분들은 콘솔에서 작업을 하겠지만 일반 사용자분들은 DSM -> 파일 스테이션 -> 스크립트 업로드 폴더로 이동하여 스크립트 파일을 마우스 오른쪽 클릭을 하여 속성창을 엽니다.
저는 소유자를 root로 두고 권한을 755로 주었습니다만.. 
아래의 작업스케줄러 부분의 사용자 권한에 맞추어 설정하시면 됩니다.
뭔지 모르겠다 하시면 위 스크린샷대로 소유자, 그룹, 권한을 설정하셔도 됩니다.

# 작업스케줄러 등록

그림과 같이 스크립트 파일을 작업스케쥴러에 등록합니다.
스케쥴 탭에서 주기적으로 동작하도록 설정 후 활성화하면 주기적으로 자동으로 백업이 진행됩니다.

# 백업된 파일들


제 NAS에서 위의 스크립트를 통해 백업되어 있는 스크린샷입니다. 
이상입니다.

시놀로지 위주로 작성이 되어 있어 권한 부분과 작업 스케줄러 등록부분은 QNAP에서 적용이 되지 않는다.
권한설정은 큐냅에서 비슷하게 적용이 되므로 찾아해보면 될 것이고 작업스케줄러는 cron에 등록하는 것으로 대신하면 될 것 이다.
crontab 등록은 http://naclepark.blogspot.kr/2015/03/copntab.html를 참고하라.

댓글 없음:

댓글 쓰기