Using Rclone for Large File Downloads from NDS

Prev Next

Overview

Rclone is a command-line program that supports downloading large files from cloud sources, such as Nasuni Data Services (NDS).

Visit https://rclone.org/ for more information on the product and to download it.

Because NDS imposes a large file download limit, ranged reads must be used to download files larger than the single-file limit (see NDS for Azure - Supported Parameters & Limits for more information).
Rclone can be used to accomplish this.

Prerequisites

Before beginning, ensure you have the following:

  • An NDS deployment connected to one or more Nasuni volumes, and the connection information.

  • Rclone installed on your local system.

Configuring Connections (“Remotes”)

NDS for Azure

Configuring the Connection to NDS

  1. Create the connection by editing the /.config/rclone/rclone.conf file based on the example in step 6. If you choose this method, skip to step 6 and bypass the wizard. Steps 2 through 5 outline the process for using the wizard.

  2. With a clean install of Rclone, run rclone config to start.

  3. Enter n for the New remote, and provide a name.
    Terminal output showing rclone configuration setup and new remote name entry.

  4. You are guided through the configuration.

    Use the following values as prompted by the rclone config wizard.

    Prompt

    Value

    Storage

    azureblob

    account

    nds

    env_auth

    false

    key

    Enter one of the two Access Keys from your NDS deployment.
    Note: This not the same as a SAS Token.

    sas_url

    Press Enter to leave it empty

    tenant

    Press Enter to leave it empty

    client_id

    Press Enter to leave it empty

    client_secret

    Press Enter to leave it empty

    client_certificate_path

    Press Enter to leave it empty

    client_certificate_password

    n
    This configuration does not use a client certificate.

    Edit advanced config

    y

    Required to specify the NDS endpoint

    client_send_certificate

    false

    username

    Press Enter to leave it empty

    User’s password

    n

    service_principal_file

    Press Enter to leave it empty

    disable_instance_discovery

    false

    use_msi

    false

    msi_object_id

    Press Enter to leave it empty

    msi_client_id

    Press Enter to leave it empty

    msi_mi_res_id

    Press Enter to leave it empty

    use_emulator

    false

    use_az

    false

    endpoint

    Enter the NDS Blob Storage Endpoint URL from your NDS deployment.
    Note: This URL begins with https://nds.

    upload_cutoff

    Press Enter to leave it empty

    chunk_size

    Press Enter for the default

    upload_concurrency

    Press Enter for the default

    copy_cutoff

    Press Enter for the default

    copy_concurrency

    Press Enter for the default

    use_copy_blob

    Press Enter for the default

    list_chunk

    Press Enter for the default

    access_tier

    Press Enter to leave it empty

    archive_tier_delete

    false

    disable_checksum

    false

    encoding

    Press Enter for the default

    public_access

    Press Enter to leave it empty

    directory_markers

    false

    no_check_container

    false

    no_head_object

    false

    delete_snapshots

    Press Enter to leave it empty

    description

    Optional - could be a descriptive name of this NDS instance, such as the Resource Group name.

    Edit advanced config (second time)

    n

    The configuration is completed.
    Configuration options for Azure Blob storage, including account and endpoint details.

    Keep this “name” remote (Final step)

    y
    User prompted to confirm keeping a remote configuration for Azure Blob storage.

  1. Enter q to quit the Rclone config wizard.

  2. To review the configuration, run cat ~/.config/rclone/rclone/conf
    Your configuration file should look similar to the following example:

    ❯ cat ~/.config/rclone/rclone.conf
    [NameOfRemote]
    type = azureblob
    account = nds
    key = NDSAccessKey
    endpoint = https://nds.uniquename.region.azurecontainerapps.io

  3. With the connection to NDS created (the “Remote”), the next step is to configure an additional Remote to use as the destination for data copied from NDS.

Configuring the Connection to Your Destination

Note: The following is an optional step.

Alternatively, you can write to your local filesystem as shown in the example below.

  1. Run rclone config to start. You should see your previously configured connection to NDS.
    Rclone configuration interface showing options for managing remote connections.

  2. Enter n for New remote, and provide a name.

  3. As you are guided through the configuration, refer to the Rclone documentation for information about configuring a destination.


Sample Commands

Commands require an NDS path as the source. This path begins with the Nasuni Volume GUID (referenced as a Container or Bucket) configured in NDS.

Your Nasuni Volume GUID is found by running the Get Connection Information command: NDS for Azure - Installation & Management.

ls - List objects

Rclone ls reference

In the example below:

  • The “Remote” connection name is NDS

  • The Nasuni Volume GUID value is 9f58311a-3b21-4ae6-8bb6-60e3490-0

  • We are limiting the results to two levels deep from the root.

rclone ls NDS:9f58311a-3b21-4ae6-8bb6-60e3490-0/ --max-depth 2

copyto - Copy files from source to dest, skipping identical files

Rclone copyto reference

In the example below:

  • The Source “Remote” connection name is NDS

  • The Nasuni Volume GUID value is 9f58311a-3b21-4ae6-8bb6-60e3490-0

  • The path we are copying from the root of the volume is /Accounting/

  • The destination is the local filesystem /Users/jsmith/Destination

  • --azureblob-encoding "Percent" to handle potential file paths containing “%2F”

  • --disable copy to force client side directory transfers

  • --progress to show status

  • --verbose to show verbose output

rclone copyto "NDS:9f58311a-3b21-4ae6-8bb6-60e3490-0/Accounting/" "/Users/jsmith/Destination" --azureblob-encoding "Percent" --disable copy --progress --verbose