ryg

Команда ditto в Mac OS X и FreeBSD

Синтаксис:

     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

Описание:

Первый вариант написания утилита ditto копирует исходные файлы или каталоги в заданный каталог. Если каталог назначения не существует, то он будет создан до начала копирования. Если каталог назначения существует, то копируемые каталоги будут объединены.
Вторая форма синтаксиса копирует исходный файл в файл назначения.
Третья и четвертая форма написания дают возможность создавать и распаковывать архивы. Эти архивы могут быть в форматах CPIO (предпочтительно для UNIX  систем) или PKZip (для Windows). Если вместо источника или назначения указать дефис "-", то это будет означать устройство стандартного ввода или вывода соответственно.

ditto следует по символическим ссылкам заданных в параметрах, но не обрабатывает ссылки, встреченные внутри иерархических каталогов. Утилита перезаписывает файлы, ссылки, и тома когда они копируются из источника. В результате выполнения у скопированных файлов, ссылок и томов будет тот же штамп времени (время, создания, последнего открытия, изменения), режим доступа, владелец и группа как у файла-источника. Pipes, сокеты и файлы с именами, начинающимися на .nfs и .afpDeleted игнорируются. ditto не изменяет в существующих каталогах назначения права доступа, собственников, группы, расширенные атрибуты и ACL. Файлы и ссылки не могут перезаписывать каталоги и наоборот.

ditto будет сохранять метаданные HFS и специфические атрибуты файлов, если это не будет отменено параметром --norc. Также будут сохранены расширенные атрибуты, и списки контроля доступа ACL, если не будут использованы параметры --noextattr и --noacl соответственно. Вместо параметров --norsrc --noextattr --noacl можно указать DITTONORSRC.

Параметры:

-h Напечатать документацию по использованию.
-v Выводить информацию по каждому копируемому каталогу в stderr.
-V Выводить информацию по каждому копируемому файлу, ссылкам и томам в stderr.
-X При копировании нескольких каталогов, не спускаться в каталоги размещенные на других томах (имеющие другие ID устройства)
-c Создать архив копируемых файлов. Если не использован параметр -k то по умолчанию используется формат CPIO. Несжатый архив хранится в файле с расширением .cpio, сжатые с расширением .cpgz. 
-z Создать сжатый архив CPIO используя gzip метод сжатия.
-j Создать сжатый архив CPIO используя bzip метод сжатия.
-x Извлечь файлы из архива. Если не использовать -k, то предполагается формат CPIO.
-k Сжать или распаковать из PKZip архива. Исходный архив должен иметь расширение .zip
--keepParent При создании архива встроить в архив имя родительского каталога src
--arch arch Обрабатывать универсальные двоичные файлы заданной архитектуры. Если задать несколько arch, то они будут присутствовать в скопированном файле (если они были в исходном файле). Не заданные архитектуры будут удалены. arch задается как "i386",  "x86_64" и другие.
--bom bom Копировать только те файлы, ссылки, тома и папки, которые присутствуют в заданном BOM ("bill of materials").
--rsrc Сохранять метаданные HFS. Если получающая система не поддерживает метаданные, то будут созданы дубли файлов по типу . _ AppleDouble. 
--norsrc  Не сохранять метаданные HFS. Если указать одновременно --rsrc и --noursrc, то последний отменит действие предыдущих.
--extattr Сохранять расширенные атрибуты Apple Mac OS X (требует --rsrc).
--extattr Не сохранять расширенные атрибуты Apple Mac OS X (требует --norsrc). 
--qnt Сохранять карантинную информацию. Начиная с 10.5 по умолчанию.
--noqtn  Не сохранять карантинную информацию.
--noacl   Не сохранять ACL
-nocache  Не делать копию с помощью системы кэширования Mac OS X (Mac OS X Unified Buffer Cache). Файлы читаются и записываются без каширования, хотя если файл уже кэширован, то кэш будет использован.
--hfsCompression Поддерживается в Mac OS X 10.6 и выше. Если получатель том с HFS+ результирующие файлы будут сжиматься, если это задано имеет смысл. Режим предназначен для резервного копирования с системными файлами.  
--nohfsCompression Не использовать режим сжатия HFS+.
 
--preserveHFSCompression
Во время копирования файлов на том HFS+ поддерживающий сжатие, ditto будет сохранять сжатие файлов, если до этого они уже были сжты с помощью HFS+ метода. По умолчанию начиная с версии 10.6
--nopreserveHFSCompression Не сохранять сжатие при копировании на том HFS+.  Начиная с версии 10.6
--sequesterRsrc При создании архива PKZip сохранить метаданные HFS и атрибуты файлов в папку __MACOSX. При распаковке PKZip автоматически найдет эти ресурсы.
--zlibCompressionLevel num Уровень сжатия, число от 0 до 9. 0 - означает отсутствие сжатия и наибольшее быстродействи, 9- максимальный уровень. По умолчанию используется уровень установленный в zlib.
--password При распаковке зашифрованного zip архива необходимо указать данный параметр, чтобы утилита запросила пароль. Если этого не сделать, будет выдано сообщение об ошибке.

Примеры:

 ditto src_directory dst_directory

Скопировать каталог src_directory вместе с содержимым в каталог dst_directory. Если dst_directory не существует, то создать его.

ditto src_directory dir/dst_directory

Скопировать каталог src_directory вместе с содержимым в каталог dir/dst_directory. Если dir и dst_directory не существуют, то создать их.

ditto src-1 ... src-n dst_directory

Скопировать все каталоги scr в в каталог dst_directory. Если dst_directory не существует, то создать его.

ditto --arch ppc universal_file thin_file

Скопировать содержимое universal_file в thin_file, oставив только исполняемый код для ppc.

ditto -c --norsrc Scripts -|ssh rhost ditto -x --norsrc - ./Scripts

Скопировать Scripts не сохраняя метаданные на rhost

pax -f archive.cpio

Показать список файлов в архиве формата CPIO

ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip

Заархивировать src_directory в файл archive.zip, аналогично "сжать" в Finder.

Утилита возвращает 0 если все скопировано, в противном случае не нулевое значение.

Связанные материалы:

zip      - Архивировать утилитой zip
tar      - Утилита архивирования
bzip2  - Упаковать или распаковать файлы в командной строке терминала
gzip    - Сжатие (архивация) и распаковка файлов
rsync -Копирование файлов и синхронизация дерева каталогов
Форматы файловых систем в Mac OS X

Весь список команд терминала OS X