Using Rclone for File Transfer

Rclone is an open source file transfer tool to make transfering files to and from various cloud resources such as Box, Amazon S3, Microsoft OneDrive, and Google Cloud Storage and your local machine a simpler task. Guides on how to set up a variety of resources to transfer to and from can be found at rclone’s webpage.

This tool can be used to transfer files between HCC clusters and outside cloud providers, such as OneDrive.

Setup RClone

  1. You must be able to access your NU Office365 account before beginning this process. Contact your local campus IT support if you need help with initial account setup.

  2. Due to the clusters being remote machines, Rclone will need to be installed on your local machine in order to authorize OneDrive. Some services, such as Google Drive, do not require Rclone to be installed on your local machine.

  3. After logging into the cluster of your choice, load the rclone module by entering the command below at the prompt:

    Load the Rclone module
    [demo2@login.crane ~]$ module load rclone

  4. We will need to start the basic configuration for OneDrive. To do this run rclone config:

    Load the rclone config
    [demo2@login.crane ~]$ rclone config

  5. In a new configuration, you will see no remotes found. Enter n to make a new remote and name it a name you will know. In our example, we will use “myOneDrive”. Select Microsoft OneDrive by entering in the corresponding number, in our case 23. Hit Enter for the client_id, client_secret, and Edit advanced config. When you are prompted for auto config, select n. The terminal will stop at a result> prompt. Proceed to the next step.

    Configure OneDrive
    [demo2@login.crane ~]$ rclone config
    No remotes found - make a new one
    n) New remote
    s) Set configuration password
    q) Quit config
    n/s/q> n
    name> myOneDrive
    Type of storage to configure.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
    
    23 / Microsoft OneDrive
       \ "onedrive"
    
    Storage> 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 Secret
    Leave blank normally.
    Enter a string value. Press Enter for the default ("").
    client_secret> 
    Edit advanced config? (y/n)
    y) Yes
    n) No (default)
    y/n> 
    Remote config
    Use auto config?
     * Say Y if not sure
     * Say N if you are working on a remote or headless machine
    y) Yes (default)
    n) No
    y/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> 

  6. Now switch to a terminal on your local machine and run rclone authorize "onedrive". You will be prompted to go to a 127.0.0.1 address in your web browser if a browser doesn’t open automatically. On the Microsoft Office sign-in page that opens enter in your NU e-mail address and click “Next”. You will be taken to your campus’ single sign-on page where you can sign in using your TrueYou/campus credentials. If login is successful, you should be redirected to a page that says “Success!” Return to your local rclone session. You should see a message instructing you to paste a line of code from your local machine to the cluster and then to confirm that the config is correct.

    Authorize OneDrive on local machine
    [myaccount@local.machine ~]$ rclone authorize "onedrive"
    Local Authorization after logging in with browser
    [myaccount@local.machine ~]$ rclone authorize "onedrive"
    If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
    Log in and authorize Rclone for access
    Waiting for code...
    Got code
    Paste the following into your remote machine --->
    {"access_token":"XXXX","token_type":"bearer","refresh_token":"XXXX","expiry":"XXXX"}
    <---End paste
    For other services, please refer to the rclone documentation.

  7. Returning to the cluster, now paste the code into the waiting result prompt. Then select option 1 for OneDrive Personal or Business and then 0 for OneDrive (business). Press y at the next two prompts to confirm and q to exit.

    Authorize OnDemand on cluster
    result> {"access_token":"XXXX","token_type":"bearer","refresh_token":"XXXX","expiry":"XXXX"}
    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: OneDrive (business) id=b!laCd4ZJ54U-[...]
    Chose drive to use:> 0
    Found drive 'root' of type 'business', URL: https://uofnelincoln-my.sharepoint.com/personal/demo_unl_edu/Documents
    Is that okay?
    y) Yes (default)
    n) No
    y/n> y
    --------------------
    [myOneDrive]
    type = onedrive
    token = {"access_token": ...}
    drive_id = b!laCd4ZJ54U-[...]
    drive_type = business
    --------------------
    y) Yes this is OK (default)
    e) Edit this remote
    d) Delete this remote
    y/e/d> y
    Current remotes:
    
    Name                 Type
    ====                 ====
    myOneDrive           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
    Now test the connection by running the ls command. You should see a listing of your OneDrive files.
    List contents of OneDrive
    [demo2@login.crane ~]$ rclone ls myOneDrive:/

  8. To upload or download files, use the rclone copy command. For example:

    Transferring files
    [demo2@login.crane ~]$ rclone copy myOneDrive:/SomeFile.txt ./
    [demo2@login.crane ~]$ rclone copy ./SomeFile.txt myOneDrive:/

  9. To download directories, use the rclone copy command and use directory names over file. This copies the contents of the folders, so you need to specify a destination folder.

    Download a directory from OneDrive
    [demo2@login.crane ~]$ rclone copy myOneDrive:/my_hcc_dir ./my_hcc_dir
    To upload a directory named my_hcc_dir to OneDrive, use rclone copy.
    Upload a directory to OneDrive
    [demo2@login.crane ~]$ rclone copy ./my_hcc_dir myOneDrive:/my_hcc_dir

  10. Rclone also supports using sync to transfer files, similar to rsync. The syntax is similar to rclone copy. This would only transfer files that are updated by name, checksum, or time. The example below would sync the files of the local directory to the remote directory on OneDrive.

    transfer.sh
    [demo2@login.crane ~]$ rclone sync ./my_hcc_dir myOneDrive:/my_hcc_dir