mc mv
Table of Contents
The mc mv
command moves an object from source to the target, such as
between MinIO deployments or between buckets on the same MinIO deployment.
mc mv
also supports moving objects between a local filesystem and MinIO.
You can also use mc mv
against the local filesystem to produce
similar results to the mv
commandline tool.
The following command moves objects from the mydata
bucket to the
archive
bucket on the myminio
MinIO deployment:
mc mv --recursive myminio/mydata myminio/archive
The command has the following syntax:
mc [GLOBALFLAGS] mv \
[--attr "string"] \
[--continue] \
[--encrypt "string"] \
[--encrypt-key "string"] \
[--newer-than "string"] \
[--older-than "string"] \
[--preserve] \
[--recursive] \
[--storage-class "string"] \
SOURCE [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 object or objects to move.
For moving an object from a MinIO bucket, specify the alias and the full path to the object(s) (e.g. bucket and path to objects). For example:
mc mv play/mybucket/object.txt play/myotherbucket/object.txt
For moving an object from a local filesystem, specify the full path to that object. For example:
mc mv ~/mydata/object.txt play/mybucket/object.txt
Specify multiple SOURCE
paths to move multiple objects to the
specified TARGET
. mc rm
treats the
last specified alias or filesystem path as the TARGET
. For example:
mc mv ~/mydata/object.txt play/mydata/otherobject.txt myminio/mydata
If you specify a directory or bucket to SOURCE
, you must
also specify --recursive
to recursively move the
contents of that directory. If you omit the --recursive
argument, mv
only moves objects in the top level of the specified
directory or bucket.
Required The full path to the bucket to which the command moves the
object(s) at the specified SOURCE
. Specify the
alias of a configured S3 service as the prefix to the
TARGET
path.
For moving an object from MinIO, specify the alias and hte full path to the object(s) (e.g. bucket and path to objects). For example:
mc mv play/mybucket/object.txt play/myotherbucket/object.txt
For moving an object from a local filesystem, specify the full path to that object. For example:
mc mv ~/mydata/object.txt play/mybucket/object.txt
The TARGET
object name can differ from the SOURCE
to
“rename” the object as part of the move operation.
If running mc mv
with the --recursive
option,
mc mv
treats the TARGET
as the bucket prefix for all
objects at the SOURCE
.
Optional Add custom metadata for the object. Specify key-value pairs as
KEY=VALUE\;
. For example,
--attr key1=value1\;key2=value2\;key3=value3
.
Optional Encrypt or decrypt objects using server-side encryption with
server-managed keys. Specify key-value pairs as KEY=VALUE
.
Each KEY
represents a bucket or object.
VALUE
represents the data key to use for encryptingobject(s).
Enclose the entire list of key-value pairs passed to
--encrypt
in double-quotes "
.
--encrypt
can use the MC_ENCRYPT
environment
variable for retrieving a list of encryption key-value pairs as an
alternative to specifying them on the command line.
Optional 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.
VALUE
represents the data key to use for encryptingobject(s).
Enclose the entire list of key-value pairs passed to
--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.
Optional Remove object(s) newer than the specified number of days. Specify
a string in ##d#hh#mm#ss
format. For example:
--newer-than 1d2hh3mm4ss
.
Defaults to 0
(all objects).
Optional Remove 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).
Optional Preserve file system attributes and bucket policy rules of the
SOURCE
directories, buckets, and objects on the
TARGET
bucket(s).
Optional Recursively move the contents of each bucket or directory
SOURCE
to the TARGET
bucket.
Optional 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.
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
.
mc mv [--recursive] FILEPATH ALIAS/PATH
Replace FILEPATH
with the full file path to the
file to move.
If specifying the path to a directory, include the
--recursive
flag.
mc mv
removes the files from the source after
successfully moving it to the destination.
Replace ALIAS
with the alias
of a configured S3-compatible host.
Replace PATH
with the destination bucket.
Use mc mv
with the --attr
option to set custom
attributes on file(s).
mc mv --attr "ATTRIBUTES" FILEPATH ALIAS/PATH
Replace FILEPATH
with the full file path to the
file to move. mc mv
removes the file from the source after
successfully moving it to the destination.
Replace ALIAS
with the alias
of a configured S3-compatible host.
Replace PATH
with the destination bucket.
Replace ATTRIBUTES
with one or more comma-separated
key-value pairs KEY=VALUE
. Each pair represents one attribute key and
value.
mc mv --recursive SRCALIAS/SRCPATH TGTALIAS/TGTPATH
Replace SRCALIAS
with the alias
of a configured S3-compatible host.
Replace SRCPATH
with the path to the bucket.
mc mv
removes the bucket and its contents from the source after
successfully moving it to the destination.
Replace TGTALIAS
with the alias
of a configured S3-compatible host.
Replace TGTPATH
with the path to the bucket.
Use mc mv
with the storage-class
option to set
the storage class on the destination S3-compatible host.
mc mv --storage-class CLASS FILEPATH ALIAS/PATH
Replace CLASS
with the storage class to
associate to the files.
Replace FILEPATH
with the full file path to the
file to move. mc mv
removes the file from the source after
successfully moving it to the destination.
Replace ALIAS
with the alias
of a configured S3-compatible host.
Replace PATH
with the destination bucket.
Replace ATTRIBUTES
with one or more comma-separated
key-value pairs KEY=VALUE
. Each pair represents one attribute key and
value.
mc mv –storage-class REDUCED_REDUNDANCY myobject.txt play/mybucket
MinIO uses the SOURCE
object name when moving
the object to the TARGET
if no explicit target
object name is specified.
You can specify a different object name for the
TARGET
with the same object path to “rename”
an object. For example:
mc mv play/mybucket/object.txt play/mybucket/myobject.txt
For recursive move operations (mc mv --recursive
), MinIO
treats the TARGET
path as a prefix for objects on the SOURCE
.
mc mv
verifies all move operations to object storage using MD5SUM
checksums.
Use mc mv --continue
to resume an interrupted or failed
move operation from the point of failure.
mc mv
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 mv
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 mv
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.