Ubuntu Server

우분투 서버에서 Onedrive로 파일 업로드 하기

우성군 4 699 1

 

 

1. bash-onedrive-upload 서버에 설치하기 

 

cd /usr/local/src

 

git clone --recursive https://github.com/fkalis/bash-onedrive-upload.git 

위와 같이 /usr/local/src에 파일을 저장해줍니다. 

 

 

2. 원드라이브 새로운 앱 등록 후 아이디, 암호 생성하기

 

https://apps.dev.microsoft.com

 

위 링크가서 로그인합니다.

 

그리고 주소창에

 

https://apps.dev.microsoft.com/#/appList/create/sapi

 

위 링크를 넣고 엔터를 누르면 바로 새어플의 이름을 넣을 수 있는 창이 나옵니다. 원하는 앱 이름을 넣고 진행합니다.

 

Application Id 

00000000000X0000

 

Application Secrets

xXxxxxx0XXx0x0XxxxxxXXx

위와 같이 어플리케이션 아이디와 어플리케이션 시크릿이 나와있을 것입니다. 이것은 어플리케이션 인증과 관련된 매우 중요한 내용이므로 저장해두시고, 다른 사람에게 알려지지 않도록 해주세요. 

 

 

그리고 Platforms에서 Add Platform을 누릅니다.

 

Mobile application을 눌러주시구요.

 

자동으로 모바일 부분이 추가되었을 것입니다.

 

제일 밑에 Save 누르시면 앱셋팅은 끝입니다.

 

 

이제 응용 프로그램 ID와 암호/공개 키를 등록할 차례입니다.

 

 

3. 설정 수정하기

 

/usr/local/bash-onedrive-upload/onedrive.cfg

 

위 경로에 있는 파일을 수정합니다.

 

nano /usr/local/bash-onedrive-upload/onedrive.cfg

 

# Authentication config

export api_client_id=""

export api_client_secret=""

위 내용에 아까 중요하다고 했던 

 

Application Id

00000000000X0000

 

Application Secrets

xXxxxxx0XXx0x0XxxxxxXXx

위 내용들을 넣으면 됩니다. 

 

# Authentication config

export api_client_id="00000000000X0000"

export api_client_secret="xXxxxxx0XXx0x0XxxxxxXXx"

위와 같은 형식으로 입력하면 됩니다. 

 

저장하고 나오시구요.

 

기본적인 설정은 끝났습니다.

 

 

4. 어플리케이션 인증받기

 

 

./onedrive-authorize

이제 위 명령어로 인증작업을 시작합니다. 

 

https://login.live.com/oauth20_authorize.srf?client_id=00000000000X0000&scope=wl.offline_access%20onedrive.readwrite&response_type=code&redirect_uri=https://login.live.com/oauth20_desktop.srf

위와 같은 URL을 주는데 이걸 긁어서 브라우저에서 컨트롤 V 누르면 붙여넣기가 됩니다. 

 

 

 

▲위와 같은 스샷이 뜰 것입니다. '예' 눌러주시구요.

 

그러면 빈 페이지가 뜰 것입니다. 그때 웹브라우저의 주소창에 보시면

 

https://login.live.com/oauth20_desktop.srf?code=X0xx0000x-00x0-x000-0000-x0x0x00x0000&lc=0000

 

위와 같은 URL이 들어있을 것입니다.

 

그 중에 

 

X0xx0000x-00x0-x000-0000-x0x0x00x0000

 

윗 부분이 제일 중요한 부분입니다. 해당 부분을 긁어서 복사한 후에

 

다시 Putty로 돌아와서

 

X0xx0000x-00x0-x000-0000-x0x0x00x0000

위 내용을 넣고(마우스 우클릭하면 자동으로 들어가집니다.) 엔터를 치면 

 

It seems like we have a refresh token, so we are ready to go

 

위와 같이 나오면 성공입니다.

 

 

5. 테스트하기

 

./onedrive-upload README.md

위와 같이 ./onedrive-upload 라는 명령어 뒤에 파일 이름을 넣으면 자동으로 원드라이브의 root 폴더에 업로드 됩니다. 

 

./onedrive-upload /usr/local/src/bash-onedrive-upload/README.md

위와 같이 ./onedrive-upload 명령어 뒤에 경로와 파일을 같이 넣어줘도 정상적으로 업로드 됩니다. 

 

 

6. 활용하기

 

원드라이브의 root 폴더가 아닌 원하는 폴더에 업로드 하려면

 

./onedrive-upload -f "/Web/Database" README.md

위와 같이 넣으면 됩니다. 

 

원드라이브의 root 폴더의 상대경로라고 보시면 됩니다.

 

따라서 원드라이브의 /root/Web/Database 폴더에 파일을 업로드한다는 뜻이며, 만약 해당 폴더가 없다면 자동으로 생성하여 업로드 됩니다.

 

이제 원하는 폴더 및 원하는 파일을 업로드 하려면

 

./onedrive-upload -f "/Web/Database" /usr/local/src/bash-onedrive-upload/README.md

위와 같은 형식으로 넣으면 되겠죠? 

 

상세한 내용은 링크를 참조하시면 됩니다.

 

 

저는 제 홈페이지의 DB파일과 Web파일을 주기적으로 압축하여 원드라이브에 업로드 할 것입니다.

 

이전에 Dropbox를 이용하여 업로드하는 글을 올렸었는데요.

 

https://www.wsgvet.com/odroid/60

https://www.wsgvet.com/web/62

 

Dropbox 용량이 부족하여 원드라이브에 올릴 것입니다.

 

위 링크에서 바꿀 것은 마지막 라인입니다.

 

 

Dropbox에서는

 

/usr/bin/Dropbox-Uploader/dropbox_uploader.sh upload $MYSQLBACKUPDIR/$BACKUPNAME /myDB/$BACKUPNAME

위와 같이 명령어를 넣어줬는데요. 

 

 

원드라이브에서는

 

/usr/local/src/bash-onedrive-upload/onedrive-upload -f "/Web/Database" $MYSQLBACKUPDIR/$BACKUPNAME

위와 같이 넣어주면 되겠죠? 

 

 

/usr/local/src/bash-onedrive-upload/onedrive-upload -f "/Web/Webfile" $BACKUPDIR/$BACKUPNAME

웹파일은 위와 같은 경로로 넣어줬습니다. 

 

 

DB백업 및 Web파일 백업을 위한 스크립트를 따로 만들어서 각각 새벽 5시 1분, 5시 3분에 업로드 하게 crontab에 입력하였습니다.

 

1 5 * * * /usr/local/sbin/dbbackup_to_onedrive.sh

3 5 * * * /usr/local/sbin/webfilebackup_to_onedrive.sh

위와 같이 지정해주면 되겠죠? ^^ 

, , , , ,

4 Comments
선구자 2016.12.30 08:29  
백업 필수입니다. ㅠㅠ
7월데이타 까지는 아파치님 서버에 있어서 살렸습니다. ㅎㅎ

지금 정말 저에게 필요한 글입니다.ㅣ
감사합니다.
우성군 2016.12.30 09:47  
[@선구자] 에공 그렇군요 ㅠㅠ

저는 백업을 서버의 다른 하드에 한번, 원드라이브에 한번, 드랍박스에 한번

총 3번 백업합니다.
선구자 2016.12.30 10:13  
[@우성군] 저도 우성군님같은 철저한 백업계획을 해야할것 같습니다.
이번에 많이 느꼈습니다.
우성군 2016.12.30 10:15  
[@선구자] 넵. 백업은 정말 아무리 강조해도 지나치지 않은 것 같습니다!