mc mirror
Table of Contents
The mc mirror
command synchronizes content to MinIO deployment, similar to the rsync
utility.
mc mirror
supports filesystems, MinIO deployments, and other S3-compatible hosts as the synchronization source.
The following command synchronizes content from a local filesystem directory to the mydata
bucket on the myminio
MinIO deployment.
mc mirror --watch ~/mydata myminio/mydata
The command “watches” for files added or removed on the local filesystem and synchronizes those operations to MinIO until explicitly terminated.
mc mirror --watch
updates files changed on the local filesystem to MinIO (see --overwrite
).
--watch
does not remove other files from MinIO not present on the local filesystem (see --remove
).
The command has the following syntax:
mc [GLOBALFLAGS] mirror \
[--attr "string"] \
[--disable-multipart] \
[--encrypt-key "string"] \
[--exclude "string"] \
[--fake] \
[--md5] \
[--monitoring-address "string"] \
[--newer-than "string"] \
[--older-than "string"] \
[--preserve] \
[--region "string"] \
[--remove] \
[--storage-class "string"] \
[--watch] \
SOURCE \
TARGET
Brackets []
indicate optional parameters.
Parameters sharing a line are mutually dependent.
Parameters seperated using the pipe |
operator are mutually exclusive.
Copy the example to a text editor and modify as-needed before running the command in the terminal/shell.
REQUIRED The file(s) or object(s) to synchronize to the TARGET
S3 host.
For objects on S3-compatible hosts, specify the path to the object as ALIAS/PATH
, where:
ALIAS
is the alias
of a configured S3-compatible host, and
PATH
is the path to the bucket or object. If specifying a bucket, mc mirror
synchronizes all objects in the bucket.
mc mirror [FLAGS] play/mybucket/ myminio/mybucket
For files on a filesystem, specify the full filesystem path to the file or directory :
mc mirror [FLAGS] ~/data/ myminio/mybucket
If specifying a directory, mc mirror
synchronizes all files in the directory.
REQUIRED The full path to bucket in which mc mirror
copies synchronized SOURCE objects. Specify the TARGET
as ALIAS/PATH
, where:
ALIAS
is the alias
of a configured S3-compatible host, and
PATH
is the path to the bucket.
mc mirror SOURCE play/mybucket
mc mirror
uses the object or file names from the SOURCE
when synchronizing to the TARGET
bucket.
Add custom metadata for mirrored objects. Specify key-value pairs as KEY=VALUE\;
.
For example, --attr key1=value1\;key2=value2\;key3=value3
.
Encrypt or decrypt objects using server-side encryption with client-specified keys.
Specify key-value pairs as KEY=VALUE
.
Each KEY
represents a bucket or object.
Each VALUE
represents the data key to use for encrypting object(s).
Enclose the entire list of key-value pairs passed to :mc-cmd:~mc mirror --encrypt-key
in double quotes "
.
--encrypt-key
can use the MC_ENCRYPT_KEY
environment variable for retrieving a list of encryption key-value pairs as an alternative to specifying them on the command line.
You can only delete encrypted objects if you specify the correct --encrypt-key
secret key.
Exclude object(s) in the SOURCE
path that match the specified object name pattern.
Perform a fake mirror operation. Use this operation to perform validate that the mc mirror
operation will only mirror the desired objects or buckets.
Creates a Prometheus endpoint for monitoring mirroring activity.
Specify the local network adapter and port address on which to create the scraping endpoint.
Defaults to localhost:8081
).
Mirror object(s) newer than the specified number of days.
Specify a string in #d#hh#mm#ss
format.
For example: --newer-than 1d2hh3mm4ss
.
Mirror object(s) older than the specified time limit.
Specify a string in #d#hh#mm#ss
format.
For example: --older-than 1d2hh3mm4ss
.
Defaults to 0
(all objects).
Overwrites object(s) on the TARGET
.
For example, consider an active mc mirror --overwrite
synchronizing content from Source to Destination.
If an object on Source changes, mc mirror --overwrite
synchronizes and overwrites any matching file on Destination.
Without --overwrite
, if an object already exists on the Destination, the mirror process fails to synchronize that object.
mc mirror
logs an error and continues to synchronize other objects.
Specify the string
region when creating new bucket(s) on the target.
Defaults to "us-east-1"
.
Removes object(s) on the Target that do not exist on the Source.
Use the --remove
flag to have the same list of objects on both Source and Target.
For example, objects A, B, and C exist on Source. Objects C, D, and E exist on Target.
When running mc mirror --remove
, objects A and B copy to Target and objects D and E are removed from Target.
Since an object C already exists on both, nothing moves from Source to Target.
After the action, only objects A, B, and C exist on both the Source and the Target.
mc mirror --remove
does not verify that the contents of object C are the same on both Source and Target, only that an object called C exists on both.
To ensure objects on the Source and Target match both names and content, use --overwrite
or --watch
.
Set the storage class for the new object(s) on the TARGET
.
See the Amazon documentation on Storage Classes for more information on S3 storage classses.
Use --watch
flag to mirror objects from Source to Target, where the Target may also have additional objects not present on the Source.
--watch
continuously synchronizes files from Source to Target until explicitly terminated
The Target may have files that do not exist on Source
--watch
overwrites objects on the Target if a match exists on Source, like the --overwrite
flag
Defaults to 0
(all objects).
For example, object A and B exist on the watched Source. Objects A, B, and C exist on the watched Target.
A client writes object D to Source and removes object B.
After the operation, objects A and D exist on the Source. Objects A, C, and D exist on the Target.
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.
Enables JSON lines formatted output to the console.
For example:
mc --JSON COMMAND
Disables TLS/SSL certificate verification. Allows TLS connectivity to servers with invalid certificates. Exercise caution when using this option against untrusted S3 hosts.
Displays the current version of mc
.
Use mc mirror
to mirror files from a filesystem to an S3 Host:
mc mirror FILEPATH ALIAS/PATH
Use mc mirror
with --watch
to continuously mirror files from a filesystem to an S3-compatible host where objects added to or deleted from the filesystem are added to or deleted from the host:
mc mirror --watch FILEPATH ALIAS/PATH
Use mc mirror
with --watch
to continuously mirror objects in a bucket on one S3-compatible host to another S3-compatible host where objects added to or deleted from the bucket are added to or deleted from the host.f
mc mirror --watch SRCALIAS/SRCPATH TGTALIAS/TGTPATH
The mc mirror --watch
command continuously synchronizes the source and destination targets for added and deleted objects.
This includes automatically removing objects on the destination if they are removed on the source.
For objects updated on the source to also update on the target, use –overwrite. To remove objects from the target that are not on the source, use –remove.
mc mirror --watch
relies on the mc
removal API for deleting objects. As part of
removing the last object in a bucket prefix, mc
also recursively removes
each empty part of the prefix up to the bucket root. mc
only applies the
recursive removal to prefixes created implicitly as part of object write
operations - that is, the prefix was not created using an explicit directory
creation command such as mc mb
.
For example, consider a bucket photos
with the following object prefixes:
photos/2021/january/myphoto.jpg
photos/2021/february/myotherphoto.jpg
photos/NYE21/NewYears.jpg
photos/NYE21
is the only prefix explicitly created using mc mb
.
All other prefixes were implicitly created as part of writing the object
located at that prefix.
If an mc
command removes myphoto.jpg
, the removal API automatically
trims the empty /january
prefix. If a subsequent mc
command removes
myotherphoto.jpg
, the removal API automatically trims both the /february
prefix and the now-empty /2021
prefix. If an mc
command removes
NewYears.jpg
, the /NYE21
prefix remains in place since it was
explicitly created.
If using mc mirror --watch
for operations on a filesystem, mc
applies this same
behavior by recursively trimming empty directory paths up to the root. However,
the mc
remove API cannot distinguish between an explicitly created
directory path and an implicitly created one. If mc mirror --watch
deletes the last
object at a filesystem path, mc
recursively deletes all empty directories
within that path up to the root as part of the removal operation.
The mc commandline tool is built for compatibility with the AWS S3 API and is tested 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.
This work is licensed under a Creative Commons Attribution 4.0 International License.
©2020-Present, MinIO, Inc.