ADC Home > Reference Library > Reference > Mac OS X > Mac OS X Man Pages

 

This document is a Mac OS X manual page. Manual pages are a command-line technology for providing documentation. You can view these manual pages locally using the man(1) command. These manual pages come from many different sources, and thus, have a variety of writing styles.

For more information about the manual page format, see the manual page for manpages(5).



DITTO(1)                  BSD General Commands Manual                 DITTO(1)

NAME
     ditto -- copy directory hierarchies, create and extract archives

SYNOPSIS
     ditto [-v] [-V] [-X] [<options>] src ... dst_directory
     ditto [-v] [-V] [<options>] src_file dst_file
     ditto -c [-z | -j | -k] [-v] [-V] [-X] [<options>] src dst_archive
     ditto -x [-z | -j | -k] [-v] [-V] [<options>] src_archive ... dst_directory
     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 dst_file pathname.

     The next two forms reflect ditto's ability to create and extract archives.  These archives can be
     either CPIO format (preferred for unix content) or PKZip (for Windows compatibility).  src_archive (and
     dst_archive) 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, sockets, and files with names beginning with .nfs or .afpDeleted will be ignored.
     ditto does not modify the mode, owner, group, extended attributes, or ACLs of existing directories in
     the destination.  Files and symbolic links cannot overwrite directories or vice-versa.

     ditto can be used to "thin" Universal Mach-O binaries during a copy.  ditto can also copy files selec-tively selectively
     tively 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 when run as the superuser.

     ditto will preserve resource forks and HFS meta-data information when copying unless instructed other-wise otherwise
     wise using --norsrc .  Similarly, ditto will preserve extended attributes and Access Control Lists
     (ACLs) unless --noextattr or --noacl is passed.  DITTONORSRC can be set in the environment as an alias
     to --norsrc --noextattr --noacl 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.

     -j            create compressed CPIO archives, using bzip2(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 dst_archive.

     --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 architectures
                   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-compati-ble Carbon-compatible
                   ble ._ 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
                   DITTONORSRC. Unless explicitly specified, --norsrc also implies --noextattr and --noacl
                   to match the behavior of Mac OS X 10.4.

     --extattr     preserve extended attributes (requires --rsrc). As of Mac OS X 10.5, --extattr is the
                   default.

     --noextattr   do not preserve extended attributes.

     --qtn         preserve quarantine information.  As of Mac OS X 10.5, --qtn is the default.

     --noqtn       do not preserve quarantine information.

     --acl         preserve Access Control Lists (ACLs).  As of Mac OS X 10.5, --acl is the default.

     --noacl       do not preserve ACLs.

     --sequesterRsrc
                   when creating a PKZip archive, preserve resource forks and HFS meta-data in the subdirec-tory subdirectory
                   tory __MACOSX.  PKZip extraction 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 src_directory dst_directory
     copies the contents of src_directory into dst_directory, creating dst_directory if it does not already
     exist.

     The command:
           ditto src_directory dir/dst_directory
     copies the contents of src_directory into dir/dst_directory, creating dir and dst_directory if they
     don't already exist.

     The command:
           ditto src-1 ... src-n dst_directory
     copies the contents of all of the src directories into dst_directory, creating dst_directory if it does
     not already exist.

     The command:
           ditto --arch ppc universal_file thin_file
     copies the contents of universal_file into thin_file, 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:
           ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip
     will create a PKZip archive similarly to the Finder's Compress functionality.

     The command:
           unzip -l archive.zip
     will list the files in the PKZip archive archive.zip.

ERRORS
     ditto returns 0 if everything is copied, otherwise non-zero.  ditto almost never gives up, preferring
     to report errors along the way.  Diagnostic messages will be printed to standard error.

ENVIRONMENT
     DITTOABORT  If the environment variable DITTOABORT is set, ditto will call abort(3) if it encounters a
                 fatal error.

     DITTONORSRC
                 If DITTONORSRC is set but --rsrc, --extattr, and --acl are not specified, ditto will not
                 preserve those additional types of metadata.

BUGS
     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 eventually alleviate this problem.

SEE ALSO
     bom(5), lsbom(8), mkbom(8), cpio(1), zip(1), gzip(1), bzip2(1), tar(1).

Mac OS X                          May 8, 2007                         Mac OS X

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.