Я заинтересован в том, чтобы объединить файлы с трех компьютеров Mac, скопировав файлы каждого из них в единую иерархию папок моего проекта на внешнем жестком диске.
В моем прошлом опыте копирования файлов в OSX иногда файлы теряли свои метки времени создания и изменения; то есть они изменены на текущий момент, когда происходит копирование файла.
Как я могу убедиться, что этого не произойдет?
macos
file-transfer
зеркало
источник
источник
Ответы:
Я просто столкнулся с этим сам, и встроенная
cp
команда фактически обрабатывает это.Я обнаружил кучу старых CF-карт, с которых хотел собрать фотографии. Мои скрипты обработки будут искать файл mtime, чтобы поместить его в правильное место, поэтому мне нужно было его сохранить.
Со страницы руководства :
Итак, с помощью
zsh
я смог запустить (NO NAME
имя тома моих карт):Я считаю, что специальная
/**/*
конструкция специфична для ZSH; Однако вы могли бы сделать что-то вродеисточник
cp -p
прямолинейно, сохраняет измененное время (вероятно, самое полезное из трех временных меток в файле) и не требует создания промежуточного архивного файла.cp -p
не работает при копировании из HFS + в FAT32.Я использую rsync для такого рода копирования. Однако обратите внимание, что версия, поставляемая Apple, - 2.6.9, и в ней есть ошибки. Таким образом, вам нужно получить стороннюю сборку либо самостоятельно, либо через менеджер пакетов.
например
Опция
-E
копирует ACL и-a
сохраняет разрешения и время Unix. (ну, это было на rsync 2 rsync 3, кажется, нужно -AX)rsync
также можно настроить копирование на удаленные машины без установки дисков.Для rsync есть несколько интерфейсов GUI, например, aRsync . Для других инструментов синхронизации каталогов см. Этот вопрос .
источник
rsync
это хорошее решение, но имейте в виду, что оно не сохраняет время доступа.pax
(см. мой ответ ниже).man rsync
и искатьpreserve times
:) ⇒ ответ от Марка правильный.-t
. Ошибка, вероятно, присутствует и в Mavericks и Yosemite.Использование
pax
. Формат по умолчаниюpax
, называемый ustar , сохраняет время изменения файла и время доступа (среди прочего, такие как идентификатор пользователя, идентификатор группы, биты режима файла и расширенные атрибуты, такие как комментарии Spotlight и ACL). Смотритеpax
man-страницу здесь для более подробной информации.Сначала создайте
pax
архив на каждом Mac и скопируйте его на внешний жесткий диск следующим образом:Введите в терминале:
и перетащите папку, в которой находятся файлы, которые нужно объединить, на этом Mac в терминал:
В качестве альтернативы вы можете ввести полное имя папки:
Это изменит текущую папку на «вашу папку».
Архивируйте папку с
pax
:Используйте Finder для копирования вновь созданного архива
yourfolder.ustar
на внешний жесткий диск.Затем распакуйте архив с помощью
pax
:Откройте терминал на Mac, к которому подключен внешний жесткий диск USB.
Измените текущую папку на иерархию отдельных папок на внешнем жестком диске с помощью команды,
cd
как описано выше:Извлечь архивы:
При необходимости перемещайте файлы с помощью Finder (Finder сохраняет изменения файлов и время доступа в том же томе).
(Я тестировал эту процедуру на OS X 10.8 (Mountain Lion).)
источник
Сожмите их с помощью zip или выделите их с помощью ctrl-клика или правого клика и выберите «Сжать». Скопируйте сжатые файлы в целевую систему и откройте их там.
Если можете, отформатируйте внешний диск как файловую систему Mac OS, а не как FAT.
источник