Back to writing
미분류 3 min read HYEONG HWAN, MUN

Linux 원격 백업 구현하기 (Dropbox 에 백업하기)

최근 나야나(nayana) 서버 해킹 사건으로 인해 서버 백업의 중요성 매우 커졌습니다.

실제로 백업은 매우매우 중요합니다.

 

이 글은 기존에 제가 작성한 https://blog.lael.be/post/1449 글에 이어서 작성하는 글입니다.

즉 이 글의 내용을 구현하려면 먼저 위의 글로 이동하여 로컬 백업을 구현해 두어야 합니다.

 

1. 믿을 수 있는 원격 저장소 찾기

이 글에서는 백업/동기화 부문에서 전세계 1위 업체인 Dropbox 를 원격 저장소로 사용할 것입니다.

 

https://www.dropbox.com 로 이동하여 무료 회원가입을 실시합니다.

무료 회원은 2GB 의 저장공간을 받습니다. 기타 다양한 기능을 사용할 수 있습니다.

 

추가 저장공간을 원한다면 1TB 저장공간 1년 사용 할 수 있는 Plus 가입을 해보세요! (권장)

 

2. Linux 서버에 Dropbox Uploader  설치

Dropbox Uploader 는 https://github.com/andreafabrizi/Dropbox-Uploader 에서 다운 받을 수 있습니다.

CURL을 사용한 단순한 쉘 스크립트이며 따라서 서버에 추가적으로 설치할 프로그램은 없습니다.

 

본문은 Linux root 계정으로 진행합니다. (웹호스팅 일반 사용자도 사용 가능합니다. 이 경우 경로를 잘 설정하세요.)

 

홈 디렉토리로 이동

# cd ~

 

Dropbox Uploader 폴더 생성

# mkdir uploader
# cd uploader

 

최신 소스 다운로드

# wget https://github.com/andreafabrizi/Dropbox-Uploader/archive/master.zip
# unzip master.zip

 

 

혹시나 서버에 unzip  프로그램이 설치되어 있지 않다면 다음 명령어로 unzip 설치

# apt-get install unzip

 

업로드 프로그램 실행

# cd Dropbox-Uploader-master/
# ./dropbox_uploader.sh

 

 

업로드 키를 등록해주어야 합니다.

영어 문구에 나타난 대로 진행하면 됩니다.

 

1) https://www.dropbox.com/developers/apps 이동
2) Create App

 

3) Dropbox API app

 

4) 앱 이름은 중복되지 않게 작성

위의 예제에서는 ajsdfiasodf-myblog-server 를 사용하였습니다.

 

Create App 후에

 

 

5) 앱 접근키 생성

자신만 사용할 것이기 때문에 개발 상태는 Development 로 그대로 둡니다.

 

Generate access token 을 사용하여 앱에대한 접근키를 얻습니다.

 

6) 서버에 Access Token 입력

Access token 은 본인만 알고 있어야 하며 관리를 잘해야합니다. 이 키가 있는 사람은 해당 앱폴더에 접근할 수 있게 됩니다.

입력 정보는 /root/.dropbox_uploader 에 저장됩니다.

 

7) 원격 백업 테스트
# /root/uploader/Dropbox-Uploader-master/dropbox_uploader.sh upload CHANGELOG.md /

 

8) 웹사이트에서 해당 폴더로 이동하여 백업이 정상적으로 되었는지 확인

 

9) 실제 사용 예제

대부분의 경우 압축백업을 진행하는 것이 좋습니다.

> 압축백업 : 작은 크기의 파일이 많을 경우 진행하세요. 웹사이트 백업. 사진 백업. 등

서버 로컬의 /backup 폴더에 압축 백업을 진행함. 백업 후 dropbox 에 업로드함. 10일이 지난 파일은 삭제함.

[code language="bash" title="backup.sh"]

#!/bin/bash
CURRENT=$(date +%Y%m%d%H%M%S)
tar -czpf /backup/jingjing.${CURRENT}.tgz /home/jingjing 1>/dev/null 2>/dev/null
mysqldump --extended-insert=FALSE -hlocalhost -uroot -ptest1234 mydbname > /backup/mydbname.${CURRENT}.sql
/root/uploader/Dropbox-Uploader-master/dropbox_uploader.sh upload /backup/jingjing.${CURRENT}.tgz /
/root/uploader/Dropbox-Uploader-master/dropbox_uploader.sh upload /backup/mydbname.${CURRENT}.sql /
find /backup/ -type f -mtime +10 | sort | xargs rm -f

[/code]

 

> 즉시백업 : 대용량이며 파일 갯수가 적을 경우 이렇게 하세요. 동영상 폴더 백업. 등

서버 로컬 파일을 즉시 dropbox 에 업로드합니다. 압축백업(위의 방식)보다 트래픽이 더 발생하고, 파일 1개를 전송하는 압축백업과 다르게 모든 파일에 대해서 upload 명령을 실행해야 하므로 시간이 훨씬 더 오래 걸립니다.

[code language="bash" title="backup.sh"]

#!/bin/bash
CURRENT=$(date +%Y%m%d%H%M%S)
/root/uploader/Dropbox-Uploader-master/dropbox_uploader.sh upload /home/myuser1/www /myuser1/${CURRENT}

[/code]

 

 

10) 확인

< 그림 : 매일 오전 3:30 에 Dropbox 원격 백업이 실행되고 있다 >

 

Dropbox 에 저장된 파일은 모든 변동 내역이 기록되며 요금제에 따라서 최소 30일에서 최대 1년간의 시점 복원이 가능합니다.

즉 의도치 않은 파일 삭제에 대해서 안전해 집니다.

 

안전한 원격 백업 완성!

Filed under