> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.zata.prathamchopde.site/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.zata.prathamchopde.site/_mcp/server.

# MinIO Client (mc)

The MinIO Client, `mc`, is a command-line tool for S3 storage. It browses, uploads, downloads and mirrors Zata buckets directly. You only need the client: a MinIO server is separate storage of its own and does not show your Zata buckets.

> **Info**
>
> Tested with mc RELEASE.2026-09-19T15-24-59Z on Zata in October 2026.

## Before you start

* A bucket. See [Create a bucket](/buckets/create-a-bucket).
* An access key and secret key from the same region as the bucket. See [Access keys](/access/access-keys).

## Connection settings

| Setting                 | Value                                                                                         |
| ----------------------- | --------------------------------------------------------------------------------------------- |
| URL                     | `https://idr01.zata.ai` for Indore, `https://bom01.zata.ai` for Mumbai                        |
| Access key / Secret key | from **Access Keys** in the Zata console. The key must be from the same region as the bucket. |
| API                     | `S3v4`                                                                                        |
| Path-style              | `--path on`                                                                                   |

## Install mc

On Linux (x86_64):

```bash
curl -fL https://dl.min.io/aistor/mc/release/linux-amd64/mc -o mc
sudo install mc /usr/local/bin/mc
mc --version
```

For Windows, macOS or ARM Linux, download `mc` from [dl.min.io/aistor/mc/release](https://dl.min.io/aistor/mc/release/).

## Add Zata as an alias

An alias is mc's name for a saved connection. Replace the two keys with yours. For Mumbai, use `https://bom01.zata.ai`.

```bash
mc alias set zata https://idr01.zata.ai YOUR_ACCESS_KEY YOUR_SECRET_KEY --api S3v4 --path on
```

`--api S3v4` uses Signature V4, and `--path on` turns on path-style addressing.

On a shared server, type the keys hidden instead, so that they never land in your shell history:

```bash
read -rsp "Access key: " ZATA_KEY; echo
read -rsp "Secret key: " ZATA_SECRET; echo
mc alias set zata https://idr01.zata.ai "$ZATA_KEY" "$ZATA_SECRET" --api S3v4 --path on
unset ZATA_KEY ZATA_SECRET
```

## Test it

Replace `my-bucket` with your bucket name:

```bash
echo "hello from mc" > test.txt
mc cp test.txt zata/my-bucket/test.txt
mc ls zata/my-bucket/
mc cp zata/my-bucket/test.txt ./downloaded-test.txt
```

`mc ls zata` lists your buckets. A sub-user's key may show none; use the bucket name directly.

## Mirror a folder

```bash
mc mirror ./my-folder zata/my-bucket/my-folder
```

`mc mirror` uploads new and changed files. With `--remove`, it also deletes files in Zata that are not in the local folder, so try it on a small folder first.

## What works on Zata

Measured with mc RELEASE.2026-09-19:

| mc command                                                     | On Zata                                                                                                                             |
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `cp`, `ls`, `mirror`, `rm`, `cat`, `stat`                      | Work                                                                                                                                |
| `tag set`, `tag list`                                          | Work                                                                                                                                |
| `version info`                                                 | Works                                                                                                                               |
| `sql` (query a CSV or JSON file)                               | Works                                                                                                                               |
| `cp --enc-s3`, `cp --enc-c`, `mc encrypt`                      | Do not work. Zata rejects server-side encryption (`InvalidRequest`).                                                                |
| `--storage-class GLACIER` (or any class other than `STANDARD`) | Does not work (`InvalidArgument`).                                                                                                  |
| `mc admin`                                                     | Does not work. It manages a MinIO server, not Zata.                                                                                 |
| `ilm` (lifecycle), `event`, `retention`, `legalhold`           | A sub-user's key gets `Access Denied`; not tested with the owner's key. Manage lifecycle rules and Object Lock in the Zata console. |

## Troubleshooting

| Problem                                 | Fix                                                                                        |
| --------------------------------------- | ------------------------------------------------------------------------------------------ |
| The download address returns `410 Gone` | You used the old address `dl.min.io/client/mc/release`. Use `dl.min.io/aistor/mc/release`. |
| `Access Denied`                         | The key has no permission on that bucket, or it is from the other region.                  |
| `mc ls zata` shows no buckets           | A sub-user's key cannot list buckets. Use the bucket name: `mc ls zata/my-bucket/`.        |

For other errors, see [Access denied](/help/troubleshooting/access-denied) and [Wrong endpoint or region](/help/troubleshooting/endpoint-and-region).