MinIO Client
The MinIO Client mc
command line tool provides a modern alternative
to UNIX commands like ls
, cat
, cp
, mirror
, and diff
with
support for both filesystems and Amazon S3-compatible cloud storage services.
The mc commandline tool is built for compatibility with the AWS S3 API and is tested with MinIO and AWS S3 for expected functionality and behavior.
MinIO provides no guarantees for other S3-compatible services, as their S3 API implementation is unknown and therefore unsupported. While mc commands may work as documented, any such usage is at your own risk.
mc
has the following syntax:
mc [GLOBALFLAGS] COMMAND --help
See Command Quick Reference for a list of supported commands.
Version Alignment with MinIO Server
The MinIO Client releases separately from the MinIO Server.
For best functionality and compatibility, use a MinIO Client version released closely to your MinIO Server version. For example, a MinIO Client released the same day or later than your MinIO Server version.
You can install a version of the MinIO Client that is more recent than the MinIO Server version.
However, if the MinIO Client version skews too far from the MinIO Server version, you may see increased warnings or errors as a result of the differences.
For example, while core S3 APIs around copying (mc cp
) may remain unchanged, some features or flags may only be available or stable if the client and server versions are aligned.
Quickstart
1) Install mc
Install the mc command line tool onto the host machine. Click the tab that corresponds to the host machine operating system or environment:
The following commands add a temporary extension to your system
PATH for running the mc
utility. Defer to your operating system
instructions for making permanent modifications to your system PATH.
Alternatively, execute mc
by navigating to the parent folder and
running ./mc --help
64-bit Intel
curl https://dl.min.io/client/mc/release/linux-amd64/mc \
--create-dirs \
-o $HOME/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/
mc --help
64-bit PPC
curl https://dl.min.io/client/mc/release/linux-ppc64le/mc \
--create-dirs \
-o ~/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/
mc --help
ARM64
curl https://dl.min.io/client/mc/release/linux-arm64/mc \
--create-dirs \
-o ~/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/
mc --help
Install from the MinIO Download Page
MinIO does not officially publish its binaries to common Linux repositories or package managers (Ubuntu, RHEL, Archlinux/AUR). The only official source of MinIO binaries is the MinIO Download Page.
MinIO does not recommend installation through a package manager, as upstream repositories may install the incorrect package or a renamed package.
All documentation assumes the installation of the official mc
client binary through the download page only, with no changes to binary naming.
brew install minio/stable/mc
mc --help
Open the following file in a browser:
https://dl.min.io/client/mc/release/windows-amd64/mc.exe
Execute the file by double clicking on it, or by running the following in the command prompt or powershell:
\path\to\mc.exe --help
Installation from source is intended for developers and advanced users and requires a working Golang environment. See How to install Golang.
Run the following commands in a terminal environment to install mc
from source:
go install github.com/minio/mc@latest
mc update
does not support source-based installations.
2) Create an Alias for the S3-Compatible Service
Important
The following example temporarily disables the bash history to mitigate the risk of authentication credentials leaking in plain text. This is a basic security measure and does not mitigate all possible attack vectors. Defer to security best practices for your operating system for inputting sensitive information on the command line.
Use the mc alias set
command to add an Amazon S3-compatible service
to the mc
configuration.
bash +o history
mc alias set ALIAS HOSTNAME ACCESS_KEY SECRET_KEY
bash -o history
Replace
ALIAS
with a name to associate to the S3 service.mc
commands typically requireALIAS
as an argument for identifying which S3 service to execute against.Replace
HOSTNAME
with the URL endpoint or IP address of the S3 service.Replace
ACCESS_KEY
andSECRET_KEY
with the access and secret keys for a user on the S3 service.
Replace each argument with the required values.
If you omit the ACCESS_KEY
and SECRET_KEY
, the command prompts you to enter those values in the CLI.
Each of the following tabs contains a provider-specific example:
mc alias set myminio https://minioserver.example.net ACCESS_KEY SECRET_KEY
mc alias set myS3 https://s3.{your-region-code}.amazonaws.com/endpoint ACCESS_KEY SECRET_KEY
mc alias set myGCS https://storage.googleapis.com/endpoint ACCESS_KEY SECRET_KEY
3) Test the Connection
Use the mc admin info
command to test the connection to
the newly added MinIO deployment:
mc admin info myminio
The command returns information on the S3 service if successful. If unsuccessful, check each of the following:
The host machine has connectivity to the S3 service URL (i.e. using
ping
ortraceroute
).The specified
ACCESSKEY
andSECRETKEY
correspond to a user on the S3 service. The user must have permission to perform actions on the service.For MinIO deployments, see Access Management for more information on user access permissions. For other S3-compatible services, defer to the documentation for that service.
Command Quick Reference
The following table lists mc
commands:
Note
The MinIO Client also includes an administration extension for managing MinIO deployments.
See mc admin
for more complete documentation.
The below table does not include those commands.
Command |
Description |
---|---|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The To remove only the contents of a bucket, use |
|
The |
|
The |
|
The |
|
The |
|
Use the |
|
The |
|
The |
|
The MinIO Client |
|
The |
|
The |
|
The |
|
The |
|
The |
|
The |
Configuration File
mc
uses a JSON
formatted configuration file used for storing
certain kinds of information, such as the aliases
for
each configured S3-compatible service.
For Linux and macOS, the default configuration file location is
~/.mc/config.json
.
For Windows, mc
attempts to construct a default file path by trying
specific environment variables. If a variable is unset, mc
moves
to the next variable. If all attempts fail, mc
returns an error.
The following list describes each possible file path location in the order
mc
checks them:
HOME\.mc\config.json
USERPROFILE\.mc\config.json
HOMEDRIVE+HOMEPATH\.mc\config.json
You can use the --config-dir
Certificates
The MinIO Client stores certificates and CAs for deployments to the following paths:
Linux, macOS, and other Unix-like systems:
~/.mc/certs/ # certificates
~/.mc/certs/CAs/ # Certificate Authorities
Windows systems:
C:\Users\[username]\mc\certs\ # certificates
C:\Users\[username]\mc\certs\CAs\ # Certificate Authorities
When creating a new alias, the MinIO Client fetches the peer certificate, computes the public key fingerprint, and asks the user whether to accept the deployment’s certificate. If you decide to trust the certificate, the MinIO Client adds the certificate to the certificate authority path listed above.
Note
In testing environments, you can bypass the certificate check for selected MinIO Client commands by passing the --insecure
flag.
Pattern Matching
Some commands and flags allow for pattern matching. When enabled, a pattern can include either of these wildcards for character replacement:
*
to represent a string of characters to match, either in the middle or end.?
to represent a single character.
For example, refer to the following examples for wildcard uses and their results.
Pattern |
Text |
Match Result |
---|---|---|
|
ab |
Match |
|
abd |
Not a match |
|
abcd |
Match |
|
abxxc |
Match |
|
abxc |
Match |
|
abxc |
Match |
|
abc |
Match |
|
abcxdd |
Not a match |
Global Options
All commands support the following global options. You can also define some of these options using Environment Variables.
- --config-dir
The path to a
JSON
formatted configuration file that mc uses for storing data. See Configuration File for more information on how mc uses the configuration file.Alternatively, set the environment variable
MC_CONFIG_DIR
.
- --debug
Enables verbose output to the console.
For example, the following operation adds verbose output to the
mc ls
command:mc --debug ls play
Alternatively, set the environment variable
MC_DEBUG
.
- --disable-pager, --dp
New in version mc: RELEASE.2024-04-29T09-56-05Z
Disable the pager functionality of the MinIO Client in the CLI. When used, output prints to raw
STDOUT
instead.
- --insecure
Disables TLS/SSL certificate verification. Allows TLS connectivity to servers with invalid certificates. Exercise caution when using this option against untrusted S3 hosts.
Alternatively, set the environment variable
MC_INSECURE
.
- --json
Enables JSON lines formatted output to the console.
For example, the following operation adds JSON Lines output to the
mc ls
command:mc --json ls play
Alternatively, set the environment variable
MC_JSON
.
- --no-color
Disables the built-in color theme for console output. Useful for dumb terminals.
Alternatively, set the environment variable
MC_NO_COLOR
.
- --quiet
Suppresses console output.
Alternatively, set the environment variable
MC_QUIET
.
- --resolve
New in version mc: RELEASE.2024-08-13T05-33-17Z
Creates a custom DNS mapping to resolve a HOST to a specified IP address.
Use the following syntax:
--resolve HOST[:PORT]=IP
For example:
mc alias set --resolve myminio.example.com:9000=192.168.188.118 'myminio' 'https://myminio.example.com:9000' 'miniouser' 'miniosecret'
Repeat the flag multiple times to add additional custom DNS mappings.
- --version
Displays the current version of
mc
.