DITO(1) BSD General Commands Manual DITO(1)
NAME
ditto -- copy files and directories to a destination directory
SYNOPSIS
ditto [-v] [-V] [-X] [] src ... dstdirectory
ditto [-v] [-V] [] srcfile dstfile
ditto -c [-z -k] [-v] [-V] [-X] [] src dstarchive
ditto -x [-z -k] [-v] [-V] [] srcarchive ... dstdirectory
ditto -h --help
DESCRIPTION
In its first form, ditto copies one or more source files or directories
to a destination directory. If the destination directory does not exist
it will be created before the first source is copied. If the destination
directory already exists then the source directories are merged with the
previous contents of the destination.
In its second form, ditto copies a file to the supplied dstfile path-
name.
The next two forms reflect ditto's ability to create and extract ar-
chives. These archives can be either CPIO format (preferred for unix
content) or PKZip (for Windows compatibility). srcarchive (and
dstarchive) can be the single character '-', causing ditto to read
(write) archive data from stdin (or to stdout, respectively).
ditto follows symbolic links provided as arguments but does not follow
any links as it traverses the source or destination hierarchies. ditto
overwrites existing files, symbolic links, and devices in the destination
when these are copied from a source. The resulting files, links, and
devices will have the same mode, access time, modification time, owner,
and group as the source items from which they are copied. Pipes, sock-
ets, and files with names beginning with .nfs or .afpDeleted will be
ignored. ditto does not modify the mode, owner, or group of existing
directories in the destination. Files and symbolic links cannot over-
write directories or vice-versa.
ditto can be used to "thin" Universal Mach-O binaries during a copy.
ditto can also copy files selectively based on the contents of a BOM
("Bill of Materials") file. ditto preserves hard links present in the
source directories and preserves setuid and setgid modes.
ditto will preserve resource forks and HFS meta-data information when
copying unless instructed otherwise using --norsrc . DITONORSRC can be
set in the environment as an alias to --norsrc on the command line.
OPTIONS
-h print full usage
-v print a line of output to stderr for each source directory
copied.
-V print a line of output to stderr for every file, symbolic
link, and device copied.
-X when copying one or more source directories, do not descend
into directories that have a different device ID.
-c create an archive at the destination path. The default
format is CPIO, unless -k is given. CPIO archives should
be stored in files with names ending in .cpio. Compressed
CPIO archives should be stored in files with names ending
in .cpgz.
-z create compressed CPIO archives, using gzip(1) compression.
-x extract the archives given as source arguments. The format
is assumed to be CPIO, unless -k is given. Compressed CPIO
is automatically handled.
-k create or extract from a PKZip archive instead of the
default CPIO. PKZip archives should be stored in filenames
ending in .zip.
--keepParent when creating an archive, embed the parent directory name
src in dstarchive.
--arch arch Thin Universal binaries to the specified architecture. If
multiple --arch options are specified then the resulting
destination file will contain each of the specified archi-
tectures (if they are present in the source file). arch
should be specified as "ppc", "ppc64", "i386", etc.
--bom bom copy only files, links, devices, and directories that are
present in the specified BOM.
--rsrc preserve resource forks and HFS meta-data. ditto will
store this data in Carbon-compatible . AppleDouble files
on filesystems that do not natively support resource forks.
As of Mac OS X 10.4, --rsrc is default behavior.
--norsrc do not preserve resource forks and HFS meta-data. If both
--norsrc and --rsrc are passed, whichever is passed last
will take precedence. Both options override DITONORSRC.
--sequesterRsrc
when creating a PKZip archive, preserve resource forks and
HFS meta-data in the subdirectory MACOSX. PKZip extrac-
tion will automatically find these resources.
--nocache do not perform copies using the Mac OS X Unified Buffer
Cache. Files read and written will not be cached, although
if the file is already present in the cache, the cached
information will be used.
EXAMPLES
The command:
ditto srcdirectory dstdirectory
copies the contents of srcdirectory into dstdirectory, creating
dstdirectory if it does not already exist.
The command:
ditto srcdirectory dir/dstdirectory
copies the contents of srcdirectory into dir/dstdirectory, creating dir
and dstdirectory if they don't already exist.
The command:
ditto src-1 ... src-n dstdirectory
copies the contents of all of the src directories into dstdirectory,
creating dstdirectory if it does not already exist.
The command:
ditto --arch ppc universalfile thinfile
copies the contents of universalfile into thinfile, thinning executable
code to ppc-only on the fly.
The command:
ditto -c --norsrc Scripts -ssh rhost ditto -x --norsrc - ./Scripts
copies Scripts, skipping any resources or meta-data, to rhost.
The command:
pax -f archive.cpio
will list the files in the CPIO archive archive.cpio.
The command:
pax -zf archive.cpgz
will list the files in the compressed CPIO archive archive.cpgz.
The command:
unzip -l archive.zip
will list the files in the PKZip archive archive.zip.
ERORS
ditto returns 0 if everything is copied, otherwise non-zero. ditto
almost never gives up, preferring to report errors along the way. Diag-
nostic messages will be printed to standard error.
ENVIRONMENT
DITOABORT If the environment variable DITOABORT is set, ditto will
call abort(3) if it encounters a fatal error.
DITONORSRC
If DITONORSRC is set and -rsrc is not specified, ditto will
behave as if --norsrc was specified.
BUGS
ditto does not preserve file flags (see chflags(1)) including uchg, which
corresponds to "locked" elsewhere in the system. ditto does not copy
pipes; it should. ditto cannot copy multiple sources into a CPIO archive
(this is not expected for PKZip).
ditto doesn't copy directories into directories in the same way as cp(1).
In particular,
ditto foo bar
will copy the contents of foo into bar, whereas
cp -r foo bar
copies foo itself into bar. Though this is not a bug, some may consider
this bug-like behavior. --keepParent for non-archive copies will eventu-
ally alleviate this problem.
SEE ALSO
bom(5), lsbom(8), mkbom(8), cpio(1), zip(1), gzip(1), tar(1).
Mac OS X May 24, 2004 Mac OS X
|