UPX를 사용하여 로컬 파일을 또우파이윈 객체 스토리지로 동기화

7,796 1

지난주 U-File이 회원 가입을 개방했을 때 계정을 하나 등록했고, 무료로 무제한 저장 공간과 2T 트래픽을 제공받았습니다. 오랫동안 기다린 끝에 마침내 심사가 통과되어 콘솔에 들어가 확인해 보니, 아무래도 또우파이윈(又拍云) 객체 스토리지를 사용하는 것 같았습니다. 또우파이윈에서 제공하는 몇 가지 도구를 테스트해 보았는데 모두 정상적으로 사용할 수 있었습니다.

유일하게 조금 아쉬운 점은 또우파이윈 스토리지가 아직 미러 원본 가져오기를 지원하지 않는다는 것입니다. 말하자면 알리 OSS, 텐센트 COS, 바이두 BOS라는 대형 업체 3곳의 객체 스토리지와 칠우윈(七牛云) 같은 소규모 업체도 모두 미러 원본 가져오기를 지원하는데, 또우파이윈은 의외로 따라오지 않고 있습니다.

미러 원본 가져오기를 지원하지 않고, 또 저는 U-File을 사용해 이미지 호스팅을 미러링하여 가속해야 했기 때문에 다른 방법을 선택할 수밖에 없었습니다. 그래서 또우파이윈 문서에서 UPX 명령줄 도구를 찾았고, 그중 sync를 사용하면 로컬 경로를 또우파이윈 객체 스토리지로 동기화할 수 있었습니다. 미러 원본 가져오기를 구현할 수는 없지만 클라우드 스토리지의 데이터와 로컬 데이터를 동기화할 수 있으니, 미러의 또 다른 형태라고 할 수 있습니다.

프로젝트 소개

UPX는 개발자를 위해 설계된 명령줄 기반 클라우드 스토리지 관리 도구입니다. 파일 업로드 및 다운로드, 증분 파일 동기화, 디렉터리 생성 및 삭제, 파일 삭제(비동기 파일 일괄 삭제 포함) 등을 수행할 수 있습니다.

오픈 소스 프로젝트:https://github.com/upyun/upx

자세한 소개는 프로젝트의 README에서 확인할 수 있습니다.

여기서는 주로 CentOS에서 upx를 사용해 로컬 파일을 또우파이윈 스토리지로 동기화하는 방법을 설명하겠습니다.

UPX 설치

Bash
# 64 位系统下载
wget -O /usr/local/bin/upx http://collection.b0.upaiyun.com/softwares/upx/upx-linux-amd64-v0.2.6
# 32 位系统下载
wget -O /usr/local/bin/upx http://collection.b0.upaiyun.com/softwares/upx/upx-linux-386-v0.2.6
Bash
# 给予权限
chmod +x /usr/local/bin/upx

설치가 완료된 후 upx를 직접 입력하여 설치가 성공했는지 확인할 수 있습니다.

명령어 소개

모든 명령은 -h를 지원하며 사용 방법을 확인할 수 있습니다.

명령설명
login또우파이윈 스토리지에 로그인
logout계정 로그아웃
sessions모든 세션 확인
switch세션 전환
info서비스명, 사용자명 등의 정보 표시
cd작업 디렉터리 변경(디렉터리로 이동)
pwd현재 디렉터리 표시
mkdir디렉터리 생성
ls현재 디렉터리의 파일 및 디렉터리 정보 표시
tree디렉터리 구조 표시
get파일 또는 디렉터리 다운로드
put파일 또는 디렉터리 업로드
rm디렉터리 또는 파일 삭제
sync디렉터리 증분 동기화, rsync와 유사
auth공간명, 운영자, 비밀번호 정보가 포함된 auth 문자열 생성
post비동기 처리 작업 제출
purgeCDN 캐시 새로 고침 작업 제출
global options설명
--quiet, -q정보 표시 안 함
--auth valueauth 문자열
--help, -h도움말 표시
--version, -v버전 표시

또우파이윈 로그인

upx login 명령을 입력하고 서비스명, 운영자, 운영자 비밀번호를 차례로 입력한 후 Enter 키를 누릅니다. Welcome to가 표시되면 로그인이 성공한 것입니다.

upx info를 입력하여 정보를 확인할 수 있습니다. CurrentDir은 현재 디렉터리이고, Usage는 사용 중인 공간입니다.

UPX는 여러 계정 로그인도 지원합니다. upx sessions를 사용해 로그인된 모든 세션을 확인하고, upx switch를 사용해 세션을 전환할 수 있습니다. 저는 여분의 계정이 없으므로 여기서는 시연하지 않겠습니다.

파일 동기화

먼저 cd로 동기화할 디렉터리를 연 다음 upx sync를 사용하여 동기화합니다.

예를 들어 upx sync 2020/ /2020/을 입력하면 현재 디렉터리 아래의 2020 폴더를 또우파이윈 스토리지 루트 디렉터리 아래의 2020 폴더로 동기화합니다.

동기화가 완료되면 위와 같은 알림이 표시됩니다. FTP 도구로 U-File에 연결하면 2020 디렉터리가 이미 완전히 동기화된 것을 확인할 수 있습니다.

이 방법은 다른 웹사이트 프로그램의 정적 리소스를 동기화하는 데에도 사용할 수 있습니다.

WordPress

Bash
upx sync wp-content/uploads/ /wp-content/uploads/

Typecho

Bash
upx sync usr/uploads/ /usr/uploads/

Flarum

Bash
upx sync public/assets/ /public/assets/

웹사이트의 루트 디렉터리를 직접 동기화해서는 절대 안 됩니다. 루트 디렉터리 아래에는 WordPress의 wp-config.php 파일과 같은 config 설정 파일이 포함되어 있을 수 있으며, 여기에는 데이터베이스 등의 중요한 정보가 들어 있습니다. 그런데 이를 또우파이윈 스토리지에 업로드하면 누구나 다운로드할 수 있어 보안에 심각한 영향을 미칩니다.

예약 동기화

현재 upx sync는 증분 동기화 방식을 사용하며 실시간 동기화는 아직 지원하지 않으므로, 예약 작업 방식으로 정기 동기화를 구현할 수밖에 없습니다.

여기서는 Crontab보다 사용하기 간단한 Baota 패널의 예약 작업을 사용합니다.

주의할 점은 예약 작업에서 upx sync를 실행할 때 동기화할 디렉터리를 시스템을 루트 디렉터리로 하는 경로로 변경해야 한다는 것입니다.

1분마다 한 번씩 동기화하도록 설정했습니다. 1분 후 로그를 확인해 보니 동기화가 정상적으로 수행된 것을 볼 수 있습니다.

Bash
+=============+=========+===========+================+===========+=============+
| SYNC_EXISTS | SYNC_OK | SYNC_FAIL | SYNC_NOT_FOUND | DELETE_OK | DELETE_FAIL |
+-------------+---------+-----------+----------------+-----------+-------------+
|         571 |       0 |         0 |              0 |         0 |           0 |
+-------------+---------+-----------+----------------+-----------+-------------+
----------------------------------------------------------------------------
★[2020-05-30 13:50:04] Successful
----------------------------------------------------------------------------

댓글

(1)
  1. Chrome 85 Windows 10

    感觉贵站非常不错,希望与贵站友情链接! 我的网站:建站知道网-http://wozhidaole.com.cn 如果同意互换友情链接,请回复!

댓글 작성