Neural Processing Mechanisms

    TypeScript icon, indicating that this package has built-in type declarations

    2.6.0 • Public • Published

    AzCopy Node

    This package allows you to invoke AzCopy v10 from NodeJS.

    Basic Usage

    const { AzCopyClient } = require("@azure-tools/azcopy-node");
    let client = new AzCopyClient();
    // AzCopy is used to move things from one location to another.
    let src = /* a `AzCopyLocation` */;
    let dst = /* a `AzCopyLocation` */;
    // All functions that start AzCopy jobs return a job ID.
    let jobId = await client.copy(src, dst);
    let status;
    // You use this job ID to check on the progress of your job, and know if it has finished.
    while (!status || status.StatusType !== "EndOfJob") {
        let jobInfo = await copyClient.getJobInfo(jobId)
        status = jobInfo.latestStatus;
        await new Promise((resolve, reject) => setTimeout(resolve, 1000));

    Where to Find an AzCopy Executable

    AzCopy executables are available on NPM for Windows (32 and 64 bit), macOS, and Linux. This package already declares each of these as optional dependencies. The exact packages are:

    They are optional dependencies because each package declares itself to only be valid for the OS it is intended for. This means that when you run npm install that only the AzCopy executable for the OS you are currently on will be installed.

    If you wish to install all versions you can use the --force flag with npm install.

    Specifying What AzCopy Executable to Use

    By default, AzCopyClient will use the @azure-tools AzCopy executable package which best matches your OS and architecture. There are two possibilities for using a differnet executable:

    1. Using a different architecture of @azure-tools AzCopy executable package (bitness) if available
    2. Using a custom AzCopy executable

    For the first scenario, if you want to force run either the 32bit for 64bit executable you can specify a bitness in the options object for the AzCopyClient constructor. Since Windows is the only OS to offer both 32 and 64 bit executables, this is really only something to consider for Windows.

    For the second scenario you can use the exe field in the options object for the AzCopyClient constructor to specify the path to a custom AzCopy executable. If you do this there are two things to be aware of:

    1. This package is verified against a specific version of AzCopy. It is not recommended to use a different version than that. If you decide to do so, make sure to test and verify appropriately.
    2. When using a IRemoteAuthLocation, you cannot use the non-NPM versions of AzCopy on Linux. The AzCopy in @azure-tools/azcopy-linux uses a special build of AzCopy.

    Azure AD Scenarios

    When you use an IRemoteAuthLocation, azcopy-node must share the authentication/refresh token included in that location with the running AzCopy executable. This is done via the OS credential store. It is up to you to implement an ICredentialStore and include it in the options for your AzCopyClient if you wish for this to happen.

    new AzCopyClient({
        credentialStore: {
            setEntry: async (service: string, account: string, value: string, exePath?: string, description?: string): Promise<void> => {
                // you implement this
            getEntry: async (service: string, account: string): Promise<string | null> => {
                // you implement this
            deleteEntry: async (service: string, account: string): Promise<boolean> => {
                // you implement this

    One possible package which can help you with this is keytar. More information can be found in the JSDoc comments for ICredentialStore and TokenRefresher.


    On macOS and Linux you may need to chmod the executables in order for them to run.

    Change Log


    • Validated against AzCopy 10.12.2
    • Added includeDirectoryStub to ICopyOptions
    • Fixed --trusted-microsoft-suffixes being added to commands when trustedDomainSuffixes is an empty array.


    • Validated against AzCopy 10.11.0
    • Options common to both ICopyOptions and IDeleteOptions were moved a new interface, ICommonOptions, with ICopyOptions and IDeleteOptions each inheriting that interface.
    • Added includePath to ICopyOptions and IDeleteOptions.
    • Added logLevel to ICopyOptions and IDeleteOptions.
    • Added disableAutoDecoding to ICopyOptions.
    • Added cacheControl to ICopyOptions.


    • Validated against AzCopy 10.10.0.
    • Added blockSizeMb to ICopyOptions.
    • Added trustedDomainSuffixes to ICopyOptions and IDeleteOptions.


    • Validated against AzCopy 10.9.0.


    • Validated against AzCopy 10.8.0.
    • Breaking Change! This package no longer directly depends on keytar or macos-keychain. If you want to use an IRemoteAuthLocation you must now implement an ICredentialStore and include it in the options for your AzCopyClient. See "Azure AD" above, and the JSDoc comments in ICredentialStore and TokenRefresher for more information.
    • All remote locations now include an optional versionId. This can be used to point at a blob version.
    • Added listOfVersions to ICopyOptions and IDeleteOptions. Wroks similar to listOfFiles, see the JSDoc comments in either of the options files for more details.
    • Added "Archive" as a possible value of the accessTier copy option.
    • Added forceIfReadOnly to IDeleteOptions.
    • Added tags to ICopyOptions.


    • First version of this package!
    • Validated against AzCopy 10.5.0.




    npm i @azure-tools/azcopy-node

    DownloadsWeekly Downloads






    Unpacked Size

    122 kB

    Total Files


    Last publish


    • azure-sdk