curl 을 이용해 Linux 서버 백업을 다른 서버로 전송하기
쓸만한지식 2015. 12. 7. 16:38
최근 Ubuntu 서버에 있는 Mysql 과 특정 디렉토리에 있는 이미지 파일들을 다른 서버로 백업받을 수 있도록 해 달라는 부탁을 받았다.
방법이야 이것저것 많이 있겠지만 내가 알고 있으면서도 할 수 있는 가장 간단한 방법으로 잔머리를 조금 써 보았다.
쉘스크립트로 디비 백업은 mysqldump로, 특정 이미지 디렉토리에 있는 파일들은 그냥 tar 로 압축해서 curl 을 이용해서 다른 서버에 있는 웹서버로 전송하는 걸로 생각을 하고 한번 맨들어 보았다.
파일 수신쪽은 JSP 든 PHP든 뭐 편한걸로 하면 되겠지만 JSP 는 이것저것 더 셋팅이 필요하기 때문에 왠만해선 아무것도 추가 설치가 필요없는 PHP 를 사용하기로 했다.
요렇게 쉘 스크립트를 작성하고 cron 에 등록해서 원하는 일정으로 원격 백업서버로 백업할 수 있다.
Shell Script
CUR_DATE=`date '+%Y%m%d%H%M'` # 백업된 압축파일이 생성될 디렉토리 BACKUP_DIR=/home/test/backup # 백업할 디렉토리 TARGET_IMAGE_DIR=/home/backup_target_dir DATABASE_BACKUP_FILE_NAME=database_$CUR_DATE.sql IMAGE_BACKUP_FILE_NAME=images_$CUR_DATE.tar.gz BACKUP_FILE_NAME=BACKUP_$CUR_DATE.tar.gz BACKUP_SERVER_URL=http://www.backup_server.com/backup.php mkdir $BACKUP_DIR # DB BACKUP mysqldump -uroot -p루트암호 -A > $BACKUP_DIR/$DATABASE_BACKUP_FILE_NAME # 백업할 특정디렉토리 압축 tar zcvf $BACKUP_DIR/$IMAGE_BACKUP_FILE_NAME $TARGET_IMAGE_DIR cd $BACKUP_DIR tar zcvf /home/test/$BACKUP_FILE_NAME ./* # 백업서버로 업로드 cd /home/test curl -F backup_file=@$BACKUP_FILE_NAME $BACKUP_SERVER_URL # clean rm -rf $BACKUP_DIR rm -rf ~/$BACKUP_FILE_NAME
백업 서버쪽 php (backup.php)
간단하게 요정도로만
<?php $uploaddir = '/home/stove/test/'; $uploadfile = $uploaddir . basename($_FILES['backup_file']['name']); move_uploaded_file($_FILES['backup_file']['tmp_name'], $uploadfile); ?>
※ php 업로드 사이즈 제약으로 에러날수 있는데 php.ini 파일에 post_max_size 와 upload_max_filesize 값을 적당히 조정해 주면 된다.
'쓸만한지식' 카테고리의 다른 글
Ubuntu 에 Node.js 설치하기~ (0) | 2015.12.14 |
---|---|
크롬 개발자 도구 기능 사용하기 #1 : contentEditable 설정 (1) | 2015.12.13 |
크롬에서 인터넷 뱅킹 플러그인 설치해도 인식이 안될때 (0) | 2015.05.13 |
MySQL : Lost connection to MySQL server at 'reading initial communication packet', system error: 0 에러날때 (2) | 2015.02.16 |
크롬 개발자 도구 창 분리하기 (2) | 2015.02.13 |