외부 클라우드 스토리지: Rclone

June 22, 2020

    Rclone

    구글 드라이브, 원드라이브 등의 외부 클라우드 스토리지 서비스와 우분투 서버를 동기화하는 프로그램으로 Rclone이 널리 쓰인다. Rclone을 이용하면 외부 클라우드 스토리지와 우분투 서버 사이에 데이터를 주고 받을 수 있고, 외부 클라우드 스토리지를 우분투 서버에 드라이브 형태로 마운트할 수도 있다.

    나의 경우에는 Microsoft 365를 구독하면서 MS Office 앱과 원드라이브를 사용하고 있는데, 문서 작성 시에 원드라이브에 저장하고 그 저장 폴더를 Rclone으로 우분투 서버의 SMB 디렉토리에 동기화해서 홈 네트워크에서도 활용하고 있다. 원드라이브의 경우에는 OneDrive Client for Linux라는 리눅스용 동기화 프로그램도 존재하지만 작동 방식이 Rclone과 비슷한데 반해 직접 빌드해서 사용해야 하는 번거로움이 있어서 Rclone을 선택했다.

    Rclone 설치

    curl -V

    Rclone 설치 스크립트는 curl 명령을 이용하므로 먼저 위 명령어로 (V는 대문자) 우분투 서버에 curl이 설치되어 있는지 확인한다. curl 7.68.0 등의 버전이 출력되지 않고 curl이 설치되어 있지 않다는 메시지가 출력된다면 sudo apt update && sudo apt install curl 명령으로 curl을 설치한다.

    sudo apt update
    
    curl https://rclone.org/install.sh | sudo bash
    

    패키지 저장소 정보를 업데이트하고 curl을 사용해서 Rclone 설치 스크립트를 실행하면 설치가 완료된다.

    외부 클라우드 스토리지 연결

    여기서는 원드라이브를 연결하는 예시를 설명한다. 원드라이브 이외의 다른 클라우드 스토리지의 연결 방법은 Rclone 웹사이트의 설명을 참고한다.

    아래는 Rclone 1.52.1 버전의 설정 화면이며, Rclone의 버전에 따라서 설정 화면의 내용이 조금 달라질 수 있다.

    모든 Rclone 명령어는 sudo를 사용하지 않고 우분투 서버 사용자의 권한으로 실행한다.

    rclone config
    

    rclone config 명령으로 Rclone 설정을 시작한다.

    2020/06/17 01:00:00 NOTICE: Config file "/home/varins/.config/rclone/rclone.conf" not found - using defaults
    No remotes found - make a new one
    n) New remote
    s) Set configuration password
    q) Quit config
    n/s/q> n
    

    Rclone 설정을 처음 시작하면 기존에 연결된 외부 클라우드 스토리지가 없으므로 새로운 연결을 생성하라는 메시지가 출력된다. n을 입력해서 New remote를 선택한다.

    name> onedrive-varins
    

    새로운 연결의 이름을 원하는 대로 설정한다. 이 이름은 나의 원드라이브를 지칭하는 이름으로 계속 사용된다. 여기서는 onedrive-varins로 입력했다.

    .
    .
    .
    23 / Microsoft OneDrive
       \ "onedrive"
    .
    .
    .
    
    Storage> 23
    

    Rclone이 지원하는 외부 클라우드 스토리지 서비스의 목록이 출력되면 그 중에서 연결하려는 서비스의 번호를 입력한다. 이 목록 및 번호는 Rclone 버전에 따라 달라지므로 위의 예시가 아닌 실제 화면에 출력된 내용을 확인해야 한다. 여기서는 Microsoft OneDrive가 23번 이므로 23을 입력한다.

    ** See help for onedrive backend at: https://rclone.org/onedrive/ **
    
    Microsoft App Client Id
    Leave blank normally.
    Enter a string value. Press Enter for the default ("").
    client_id>
    

    Microsoft App Client Id를 입력하는 화면이 출력되는데 Leave blank normally.라고 안내하고 있다. 아무 것도 입력하지 않고 엔터 키만 누르면 된다.

    Microsoft App Client Secret
    Leave blank normally.
    Enter a string value. Press Enter for the default ("").
    client_secret>
    

    Microsoft App Client Secret를 입력하는 화면이 출력되는데 역시 Leave blank normally.라고 안내하고 있다. 아무 것도 입력하지 않고 엔터 키만 누르면 된다.

    Edit advanced config? (y/n)
    y) Yes
    n) No
    y/n> n
    

    상세 설정을 하겠냐는 질문에는 n을 입력해서 Rclone의 기본 설정을 사용하면 된다.

    Remote config
    Use auto config?
     * Say Y if not sure
     * Say N if you are working on a remote or headless machine
    y) Yes
    n) No
    y/n> n
    

    원드라이브 계정 연결을 자동으로 진행하겠냐는 질문인데, 우분투 서버에는 연결 작업에 필요한 웹브라우저와 그래픽 환경이 없기 때문에 n을 입력해서 수동으로 설정한다.

    For this to work, you will need rclone available on a machine that has a web browser available.
    Execute the following on your machine (same rclone version recommended) :
            rclone authorize "onedrive"
    Then paste the result below:
    result> {"access_token":"kcBJsgLIsgCEQ+LSWpbdjFKFTbnxkbvIlibLBdfkuvhLBIcvuvILVKUBLbivLbjkuCKvmjVCYKcu78rkuCkjbouidil;fl68E5dyrs76deiFTfdy5A654edukYFIdu6DCIf87DFIdvjkgIG8deUDy6dJUfi76Eu6dcuCctSUikxlFI7ksMJgkfGk86EI75sYXJyxsyz5SIKfvi7SkFCJChtSU4SxiuYVObPOIJde/u45ASIKs5o7SO78sOtxIRxiCPb/OIviDSU64as45W5YsICiocvOhjUGOj9OYT76d8DXI7dt745Su6cUBoH0hPHKfu65W5wsy5ESud7idu6fo8GO8g77FkuvytjsdU6JYUFCVYFU56e7iYT8Ovi75e6udcouVxvbIUDxxbvIUFYiududsy53sdi7ufciudYUICVUDFU67fiuDYJCyusdytudyudukUCKUFKUYVfiufvoiboijhp9h0pgoudturtxjckvlihpogfuvhfi7dtycgvhuyftdrsxfDSRYTXFJhcgd6syetzhdfgpgyFDfsgTCJxbbncnvGxVHbIxcvbbDYRXFvxbvbHGvgftdycgv675SRYCDS6YExfjcgkvg8ftugvkjhBU8Y7TDRYjcgkhg6875DUTCY7DSRUXJFGrsez54657F687GHbnhOUVdfhjfjjdXEcZ5vhvnhj46D57IF6YdcUVGCJFXGJhjhshHsU7DRUYCGJVHbytuydrgjhtdrxfhgcvho86dtTFYGcgkvh8idurxfgUjjhREhRITdUF/YhgfdtfyoiglvhgcudtifyivgcfzCgjfxtuyvhxrUUbvcgfxtiufyvhgfxILvy6UR7VBLhgxUTYOibtdu/ysdxjXChxfGZgHrxujYXyxfhjjjhTHZfjfhjRXnr0vmwwAAWuiab9jQUPNSmj7bfZ4zRhLdtTHN0/u524qLzvEWEplI9s1xdRGmZz8CBIlmOohjhhg4jAa6kjkjlHHlklgkhjddhgdgUVJrHvH4eD0xWn99T3R0Actie/B1/2+ZcLmY7FWLbmThE3EOab0LurdqtkR66BlYLdhgJFzcpaN36oNhb9dRP5/iZHpLaE3mIQIPCSFGyHlaQTJSmQoFMjD+PqEsvqzSG3vG8KWZJZvwa3mEQT+ty1A2fXCUWy5vXzYJGuxJPfgtLf","token_type":"Bearer","refresh_token":"sfgoKJVkKJvhkuY*VblIgvuCfhjVkuygKIv4blibUkutcjxCKvliFYkyX7*768iFcnTXhfGo8FovoInIkcG3juxTEZCVVBliNofCtXhvbKYDCUTXZckBlnIuw54YFuRXhfDGstrjFdgCVlBNOhKfvK*cVLiubkgyDutyRXTJytcviBliKYvdcKVjyrxTRjvxytykuYFkLIgukFyJTXCKUYfcYJx!cKUTDCjYXCx6MhgXhsrTYwerstrE*DikuYvdgrbOI5uG78sU!YTfgsEZxcIV&*vBP98Fi336C7SXXcIOV&c*c7TX75XcIUhhjGCXRTsYytuTC4ivyO2653yD75UXcvLIbvFu46YTEZdhgT!wrHTXJYCUTrstrhXCkt8udhsdjhfjZsdf8oify7DfcvIUKts756uIFvo86de7657itu57f!vYIsw5du7iutSYx6dygtfUGVBuiDTu6YTDFi7U$","expiry":"2020-06-17T02:00:00.0000000+09:00"}
    

    원드라이브를 연결하려면 웹브라우저로 원드라이브 계정에 로그인해서 Rclone이 로그인 정보를 사용할 수 있도록 허용하고 그 토큰 정보를 받아와서 위와 같이 입력해야 하는데, 우분투 서버에는 웹브라우저와 그래픽 환경이 없으므로 웹브라우저를 사용할 수 있는 윈도우 PC 등에서 Rclone 파일을 내려받고 위에 출력된 rclone authorize "onedrive" 명령을 실행해서 토큰 정보를 얻어와야 한다.

    먼저 윈도우 PC 등에서 https://rclone.org/downloads 웹사이트에 접속해서 운영체제에 맞는 Rclone 파일을 내려받는다. 내려받은 Rclone 파일의 압축을 풀고, 윈도우의 명령 프롬프트 등을 이용해서 압축을 풀어놓은 디렉토리로 이동한 다음 rclone authorize "onedrive" 명령을 실행하면 웹브라우저가 자동으로 실행되고, 그 웹브라우저에서 원드라이브 로그인 과정을 진행하면 최종적으로 윈도우의 명령 프롬프트 등에 아래와 같은 토큰 정보가 출력된다.

    C:\Users\A\Downloads\rclone-v1.52.1-windows-amd64>rclone authorize "onedrive"
    If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=Ga3f6dfQXy5hU64euEcH76
    Log in and authorize rclone for access
    Waiting for code...
    Got code
    Paste the following into your remote machine --->
    {"access_token":"kcBJsgLIsgCEQ+LSWpbdjFKFTbnxkbvIlibLBdfkuvhLBIcvuvILVKUBLbivLbjkuCKvmjVCYKcu78rkuCkjbouidil;fl68E5dyrs76deiFTfdy5A654edukYFIdu6DCIf87DFIdvjkgIG8deUDy6dJUfi76Eu6dcuCctSUikxlFI7ksMJgkfGk86EI75sYXJyxsyz5SIKfvi7SkFCJChtSU4SxiuYVObPOIJde/u45ASIKs5o7SO78sOtxIRxiCPb/OIviDSU64as45W5YsICiocvOhjUGOj9OYT76d8DXI7dt745Su6cUBoH0hPHKfu65W5wsy5ESud7idu6fo8GO8g77FkuvytjsdU6JYUFCVYFU56e7iYT8Ovi75e6udcouVxvbIUDxxbvIUFYiududsy53sdi7ufciudYUICVUDFU67fiuDYJCyusdytudyudukUCKUFKUYVfiufvoiboijhp9h0pgoudturtxjckvlihpogfuvhfi7dtycgvhuyftdrsxfDSRYTXFJhcgd6syetzhdfgpgyFDfsgTCJxbbncnvGxVHbIxcvbbDYRXFvxbvbHGvgftdycgv675SRYCDS6YExfjcgkvg8ftugvkjhBU8Y7TDRYjcgkhg6875DUTCY7DSRUXJFGrsez54657F687GHbnhOUVdfhjfjjdXEcZ5vhvnhj46D57IF6YdcUVGCJFXGJhjhshHsU7DRUYCGJVHbytuydrgjhtdrxfhgcvho86dtTFYGcgkvh8idurxfgUjjhREhRITdUF/YhgfdtfyoiglvhgcudtifyivgcfzCgjfxtuyvhxrUUbvcgfxtiufyvhgfxILvy6UR7VBLhgxUTYOibtdu/ysdxjXChxfGZgHrxujYXyxfhjjjhTHZfjfhjRXnr0vmwwAAWuiab9jQUPNSmj7bfZ4zRhLdtTHN0/u524qLzvEWEplI9s1xdRGmZz8CBIlmOohjhhg4jAa6kjkjlHHlklgkhjddhgdgUVJrHvH4eD0xWn99T3R0Actie/B1/2+ZcLmY7FWLbmThE3EOab0LurdqtkR66BlYLdhgJFzcpaN36oNhb9dRP5/iZHpLaE3mIQIPCSFGyHlaQTJSmQoFMjD+PqEsvqzSG3vG8KWZJZvwa3mEQT+ty1A2fXCUWy5vXzYJGuxJPfgtLf","token_type":"Bearer","refresh_token":"sfgoKJVkKJvhkuY*VblIgvuCfhjVkuygKIv4blibUkutcjxCKvliFYkyX7*768iFcnTXhfGo8FovoInIkcG3juxTEZCVVBliNofCtXhvbKYDCUTXZckBlnIuw54YFuRXhfDGstrjFdgCVlBNOhKfvK*cVLiubkgyDutyRXTJytcviBliKYvdcKVjyrxTRjvxytykuYFkLIgukFyJTXCKUYfcYJx!cKUTDCjYXCx6MhgXhsrTYwerstrE*DikuYvdgrbOI5uG78sU!YTfgsEZxcIV&*vBP98Fi336C7SXXcIOV&c*c7TX75XcIUhhjGCXRTsYytuTC4ivyO2653yD75UXcvLIbvFu46YTEZdhgT!wrHTXJYCUTrstrhXCkt8udhsdjhfjZsdf8oify7DfcvIUKts756uIFvo86de7657itu57f!vYIsw5du7iutSYx6dygtfUGVBuiDTu6YTDFi7U$","expiry":"2020-06-17T02:00:00.0000000+09:00"}
    <---End paste
    

    이 화면에서 { } 부분의 토큰 정보를 복사한 다음에, 우분투 서버의 Rclone 설정 화면의 result> 부분에 붙여넣는다.

    Choose a number from below, or type in an existing value
     1 / OneDrive Personal or Business
       \ "onedrive"
     2 / Root Sharepoint site
       \ "sharepoint"
     3 / Type in driveID
       \ "driveid"
     4 / Type in SiteID
       \ "siteid"
     5 / Search a Sharepoint site
       \ "search"
    Your choice> 1
    

    그다음, 사용 중인 원드라이브 서비스의 종류를 선택한다.

    Found 1 drives, please select the one you want to use:
    0:  (personal) id=hjewy3fh7y63uet5
    Chose drive to use:> 0
    

    연결하려는 원드라이브를 선택한다.

    Found drive 'root' of type 'personal', URL: https://onedrive.live.com/?cid=hjewy3fh7y63uet5
    Is that okay?
    y) Yes
    n) No
    y/n> y
    

    선택한 원드라이브를 확인한다.

    --------------------
    [onedrive-varins]
    type = onedrive
    token = {"access_token":"kcBJsgLIsgCEQ+LSWpbdjFKFTbnxkbvIlibLBdfkuvhLBIcvuvILVKUBLbivLbjkuCKvmjVCYKcu78rkuCkjbouidil;fl68E5dyrs76deiFTfdy5A654edukYFIdu6DCIf87DFIdvjkgIG8deUDy6dJUfi76Eu6dcuCctSUikxlFI7ksMJgkfGk86EI75sYXJyxsyz5SIKfvi7SkFCJChtSU4SxiuYVObPOIJde/u45ASIKs5o7SO78sOtxIRxiCPb/OIviDSU64as45W5YsICiocvOhjUGOj9OYT76d8DXI7dt745Su6cUBoH0hPHKfu65W5wsy5ESud7idu6fo8GO8g77FkuvytjsdU6JYUFCVYFU56e7iYT8Ovi75e6udcouVxvbIUDxxbvIUFYiududsy53sdi7ufciudYUICVUDFU67fiuDYJCyusdytudyudukUCKUFKUYVfiufvoiboijhp9h0pgoudturtxjckvlihpogfuvhfi7dtycgvhuyftdrsxfDSRYTXFJhcgd6syetzhdfgpgyFDfsgTCJxbbncnvGxVHbIxcvbbDYRXFvxbvbHGvgftdycgv675SRYCDS6YExfjcgkvg8ftugvkjhBU8Y7TDRYjcgkhg6875DUTCY7DSRUXJFGrsez54657F687GHbnhOUVdfhjfjjdXEcZ5vhvnhj46D57IF6YdcUVGCJFXGJhjhshHsU7DRUYCGJVHbytuydrgjhtdrxfhgcvho86dtTFYGcgkvh8idurxfgUjjhREhRITdUF/YhgfdtfyoiglvhgcudtifyivgcfzCgjfxtuyvhxrUUbvcgfxtiufyvhgfxILvy6UR7VBLhgxUTYOibtdu/ysdxjXChxfGZgHrxujYXyxfhjjjhTHZfjfhjRXnr0vmwwAAWuiab9jQUPNSmj7bfZ4zRhLdtTHN0/u524qLzvEWEplI9s1xdRGmZz8CBIlmOohjhhg4jAa6kjkjlHHlklgkhjddhgdgUVJrHvH4eD0xWn99T3R0Actie/B1/2+ZcLmY7FWLbmThE3EOab0LurdqtkR66BlYLdhgJFzcpaN36oNhb9dRP5/iZHpLaE3mIQIPCSFGyHlaQTJSmQoFMjD+PqEsvqzSG3vG8KWZJZvwa3mEQT+ty1A2fXCUWy5vXzYJGuxJPfgtLf","token_type":"Bearer","refresh_token":"sfgoKJVkKJvhkuY*VblIgvuCfhjVkuygKIv4blibUkutcjxCKvliFYkyX7*768iFcnTXhfGo8FovoInIkcG3juxTEZCVVBliNofCtXhvbKYDCUTXZckBlnIuw54YFuRXhfDGstrjFdgCVlBNOhKfvK*cVLiubkgyDutyRXTJytcviBliKYvdcKVjyrxTRjvxytykuYFkLIgukFyJTXCKUYfcYJx!cKUTDCjYXCx6MhgXhsrTYwerstrE*DikuYvdgrbOI5uG78sU!YTfgsEZxcIV&*vBP98Fi336C7SXXcIOV&c*c7TX75XcIUhhjGCXRTsYytuTC4ivyO2653yD75UXcvLIbvFu46YTEZdhgT!wrHTXJYCUTrstrhXCkt8udhsdjhfjZsdf8oify7DfcvIUKts756uIFvo86de7657itu57f!vYIsw5du7iutSYx6dygtfUGVBuiDTu6YTDFi7U$","expiry":"2020-06-17T02:00:00.0000000+09:00"}
    drive_id = hjewy3fh7y63uet5
    drive_type = personal
    --------------------
    y) Yes this is OK
    e) Edit this remote
    d) Delete this remote
    y/e/d> y
    

    최종적으로 설정한 내용을 확인한다.

    Current remotes:
    
    Name                 Type
    ====                 ====
    onedrive-varins      onedrive
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q> q
    

    이제 연결된 원드라이브 목록이 나타난다. 설정을 종료하려면 q를 입력한다.

    rclone lsd onedrive-varins:/
    

    우분투 서버 상에서 이 명령을 실행했을 때 원드라이브에 저장된 폴더의 목록이 출력되면 정상적으로 연결된 것이다.

    Rclone 동기화

    주의: 동기화 방향에 따라 의도치 않게 데이터를 잃을 수 있으므로 반드시 테스트용 폴더와 테스트용 데이터를 생성해서 시험해보면서 이해해야 한다.
    

    디렉토리 생성

    mkdir -p /home/MySMB/OneDrive/테스트
    

    먼저 우분투 서버에 원드라이브와 동기화할 디렉토리를 생성한다. 여기서는 SMB 디렉토리 경로에 생성해서 동기화된 데이터를 SMB 네트워크에서 활용할 수 있도록 했다.

    한 방향 복사

    rclone copy onedrive-varins:테스트 /home/MySMB/OneDrive/테스트
    

    rclone copy 소스 목적지 형태로 실행하고, 소스의 데이터를 목적지에 복사한다. 위의 예시에서는 onedrive-varins테스트 폴더가 소스가 되고 우분투 서버의 /home/MySMB/OneDrive/테스트 경로가 목적지가 된다. 폴더나 파일 이름이 한글로 되어 있어도 오류없이 작동한다.

    rclone copy는 소스 경로에 있는 파일의 크기, 생성시간, MD5SUM을 확인해서 변동이 있으면 목적지 경로에 복사한다. 또한 소스 경로에 파일이 삭제되더라도 목적지 경로의 파일을 삭제하지 않는다.

    rclone copy는 기본적으로 비어있는 폴더는 복사하지 않는데, --create-empty-src-dirs 옵션을 추가해서 실행하면 비어있는 폴더도 복사한다.

    rclone copy 명령은 한 번 실행하면 파일을 한 번 복사하고 종료되며, 소스와 목적지의 파일을 계속 감시하지는 않는다.

    Rclone 웹사이트의 copy 명령 설명은 https://rclone.org/commands/rclone_copy 에서 확인할 수 있고, 그 밖의 다양한 옵션들은 https://rclone.org/flags 에서 확인할 수 있다.

    한 방향 동기화

    rclone sync onedrive-varins:테스트 /home/MySMB/OneDrive/테스트
    

    동기화 방향에 따라 의도치 않게 데이터를 잃을 수 있으므로 반드시 테스트용 폴더와 테스트용 데이터를 생성해서 시험해보면서 이해해야 한다.

    rclone sync 소스 목적지 형태로 실행하고, 소스의 데이터를 목적지에 동기화한다. 목적지 경로의 데이터는 소스 경로의 데이터와 완전히 일치된다. 따라서 소스 경로에서 파일이 삭제되면 목적지 경로에서도 파일이 삭제된다. 소스 경로에는 존재하지 않는 파일이 목적지 경로에 존재한다면 이 목적지 경로의 파일도 삭제된다.

    rclone sync는 기본적으로 비어있는 폴더는 동기화하지 않는데, --create-empty-src-dirs 옵션을 추가해서 실행하면 비어있는 폴더도 동기화한다.

    rclone sync 명령은 한 번 실행하면 파일을 한 번 동기화하고 종료되며, 소스와 목적지의 파일을 계속 감시하지는 않는다.

    Rclone 웹사이트의 sync 명령 설명은 https://rclone.org/commands/rclone_sync 에서 확인할 수 있고, 그 밖의 다양한 옵션들은 https://rclone.org/flags 에서 확인할 수 있다.

    양방향 동기화

    Rclone은 양방향 동기화 명령을 제공하지 않는데, copy 명령을 활용해서 비슷하게 구성할 수 있다.

    rclone copy onedrive-varins:테스트 /home/MySMB/OneDrive/테스트
    
    rclone copy /home/MySMB/OneDrive/테스트 onedrive-varins:테스트
    

    rclone copy 명령은 데이터에 변동이 있으면 파일을 복사하고 목적지의 파일을 삭제하지 않으므로, 위의 예시처럼 양방향으로 rclone copy 명령을 실행하면 파일 삭제 없이 두 경로의 데이터가 같아진다. 만일 파일을 영구히 삭제하고 싶다면 두 경로에서 동시에 파일을 삭제해주어야 파일이 더 이상 상대편 경로로 복사되지 않는다.

    자동화 스크립트

    rclone copy 또는 rclone sync 명령을 실행하면 한 번만 작동하고 종료되므로, 만일 계속해서 소스와 목적지의 파일을 체크하고 자동으로 복사 또는 동기화 되도록 유지하고 싶다면 rclone 명령을 담은 스크립트 파일을 생성하고 이를 우분투 서버의 스케줄러에 등록해서 주기적으로 rclone 명령이 실행되도록 설정한다.

    rclone config file
    

    rclone 명령을 담은 스크립트 파일은 rclone 설정파일을 불러올 수 있는 경로에 생성해야 오류 없이 작동한다. 위 명령어를 실행하면 Configuration file is stored at: /home/varins/.config/rclone/rclone.conf 형태로 rclone 설정파일의 경로가 출력되는데, 이 경로 상에서 .config 상위 디렉토리에 스크립트 파일을 생성해야 한다. 즉, 이 예시에서는 /home/varins/ 경로에 스크립트 파일을 생성해야 한다.

    nano /home/varins/rclone-copy.sh
    

    sudo 명령 없이 nano 편집기로 /home/varins/ 경로에 .sh 스크립트 파일을 생성한다. 파일 이름은 원하는대로 생성하면 되는데 여기서는 rclone-copy.sh 로 생성했다.

    #!/bin/bash
    if pidof -o %PPID -x "rclone-copy.sh"; then
    exit 1
    fi
    /usr/bin/rclone copy onedrive-varins:테스트 /home/MySMB/OneDrive/테스트
    /usr/bin/rclone copy /home/MySMB/OneDrive/테스트 onedrive-varins:테스트
    

    위의 형태로 원하는 rclone 명령을 작성한다. if부터 fi까지 부분은 rclone-copy.sh 스크립트가 이미 작동 중이라면 중복 실행을 하지 말라는 명령이다. if fi 아래에 원하는 rclone 복사 또는 동기화 명령을 작성한다. 작성을 완료했으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

    chmod u+x /home/varins/rclone-copy.sh
    

    작성한 스크립트 파일에 실행 권한을 부여한다.

    crontab -e
    

    sudo 없이 crontab -e 명령을 실행해서 우분투 서버의 기본 스케줄러인 crontab을 편집 모드로 연다. 만일 어떤 편집기를 사용하겠냐고 물어오면 nano 편집기를 뜻하는 숫자를 입력한다.

    */5 * * * * /home/varins/rclone-copy.sh
    

    이 내용은 5분 간격으로 rclone-copy.sh 스크립트 파일을 실행하는 스케줄이다. */5 * * * * 부분은 왼쪽부터 분, 시, 일, 월, 요일을 의미한다. 원하는 스케줄을 crontab의 끝부분에 기록하고, Ctrl키와 x키를 동시에 눌러 nano 편집기를 빠져나오면서 저장한다. crontab -l 명령으로 crontab 내용을 확인할 수 있다.

    Rclone 마운트

    rclone mount 명령을 사용하면 외부 클라우드 스토리지를 우분투 서버에 디스크 형태로 마운트 할 수 있다.

    mkdir /home/varins/mount-rclone
    

    외부 클라우드 스토리지가 마운트 될 디렉토리를 우분투 서버 상에 원하는 경로에 생성한다.

    rclone mount onedrive-varins:테스트 /home/varins/mount-rclone --daemon
    

    rclone mount 명령으로 onedrive-varins테스트 폴더를 /home/varins/mount-rclone 경로에 드라이브 형태로 마운트한다. --daemon은 백그라운드 모드로 마운트하는 옵션이다.

    fusermount -u /home/varins/mount-rclone
    

    fusermount -u 명령으로 마운트된 외부 클라우드 스토리지를 언마운트 할 수 있다.

    그밖에 네트워크 드라이브 형태로 마운트하는 방법, 캐시 설정 등의 자세한 mount 명령 사용 방법은 Rclone 웹사이트 https://rclone.org/commands/rclone_mount 를 참고한다.

    Rclone 그밖의 사용법

    https://rclone.org 웹사이트의 Storage Systems 메뉴에서 Rclone이 지원하는 클라우드 스토리지 서비스 목록과 그 설정 방법을 확인할 수 있다. Rclone이 제공하는 여러 가지 명령어와 옵션들은 https://rclone.org/commands 에서 확인할 수 있다. Rclone 전역에 적용되는 옵션들은 https://rclone.org/flags 에서 확인할 수 있고, 특정 파일이나 디렉토리를 필터링 하는 방법은 https://rclone.org/filtering 에서 확인할 수 있다. 그 밖의 Rclone 사용법은 https://rclone.org/docs 에서 확인할 수 있다.

     

    본 글의 저작권은 작성자 Varins에게 있습니다.
    Varins의 사전 서면 동의 없이 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.
    

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.