Используйте то же самое для интеллектуального копирования файлов & каталогов с терминала Mac
Оглавление:
- Использование Ditto для копирования файлов/папок
- Использование Ditto для объединения каталогов и содержимого папок
Большинство давних пользователей командной строки полагаются на команду cp для копирования файлов и каталогов, но Mac OS X предлагает другое решение с командой «ditto». Ditto немного более продвинутый, но может быть выгоднее cp по нескольким причинам, так как он не только сохраняет атрибуты владения и разрешения, но также разветвления файловых ресурсов и метаданные файлов и папок, по существу гарантируя, что файл и/или папки копируются точно.
Кроме того, ditto можно использовать для копирования файла или папки в исходный каталог, но если этот источник еще не существует, ditto автоматически создаст его. Кроме того, если папка назначения существует, скопированное содержимое будет объединено в эту папку назначения. Наконец, ditto также следует по символическим ссылкам, что делает его особенно удобным, если вы активно пользуетесь командой ln.
Чтобы лучше понять команду ditto, давайте рассмотрим несколько примеров с реальным синтаксисом.
Использование Ditto для копирования файлов/папок
В своей самой простой форме, ditto работает так же, как команда cp, со следующим основным синтаксисом:
то же источник назначения
Например, если вы хотите скопировать ~/Desktop/FluffyBackups в /Volumes/FluffyBackups/, просто введите следующее:
ditto ~/Desktop/FluffyBackups /Volumes/FluffyBackups/
Опять же, это сохранит все сведения о владельце и метаданных ресурсов скопированных файлов, что может быть особенно важно, если вы копируете файлы из одного пользовательского каталога в другой или если вы хотите сохранить что-то вроде время модификации файлов.
Если вы не уверены в исходном и целевом содержимом, вы всегда можете сравнить их с помощью команды comm или команды diff, прежде чем переходить к команде ditto.
Использование Ditto для объединения каталогов и содержимого папок
Помните, ditto проверит, существует ли уже место назначения, и если да, то объединит каталоги источника с местом назначения. Это важно и чрезвычайно полезно, так как это один из самых простых способов объединить каталоги из командной строки в Mac OS X (хотя теперь это легко сделать и в Finder).
ditto ~/Pictures/Fall2015/ /Volumes/PhotoBackup/2015/
Это позволит взять все изображения из «Fall2015» и скопировать их в уже существующий каталог «2015», эффективно объединив содержимое из источника в место назначения. Опять же, поведение слияния возникает, когда место назначения уже существует, если место назначения не существует, оно будет создано, как указано, или как имя источника.
Если вы используете ditto для копирования данных из каталогов с символическими ссылками, использование флага -V (подробно все) полезно, поскольку он будет отображать каждый файл и символическую ссылку, которые были скопированы. Примечание -V отличается от -v, который будет отображать только файлы в качестве вывода, а не символические ссылки.
Копировать без метаданных, используя Ditto
Если по какой-то причине вы не хотите копировать метаданные и ветки ресурсов, вы можете использовать флаг –norsrc следующим образом:
ditto -V --norsrc ~/Sample/Folder /Volumes/NoMetadataBackups
Использование флага –norsrc сводит на нет основное преимущество ditto, но может быть полезно в некоторых случаях.
Вы можете узнать гораздо больше об отличной команде ditto, прочитав ее справочную страницу, доступную в Mac OS X, набрав:
человек то же самое
Как обычно, используйте клавиши со стрелками для перемещения вверх и вниз по странице руководства.
Прежде чем сильно полагаться на ditto, обязательно попробуйте его несколько раз с несущественным перемещением файлов и слиянием каталогов, чтобы понять, как он работает с запланированным использованием.