Как сделать резервную копию/экспортировать фотографии/видео из нового приложения «Фотографии» на внешний жесткий диск?

У меня есть огромная библиотека в новом приложении «Фотографии» на моей машине Mac OS X Yosemite, я хочу знать самый простой способ экспортировать или сделать резервную копию всех этих фотографий и видео на внешний жесткий диск (отформатированный для Mac), учитывая это, я хочу для использования фотографий и видео на компьютере с Windows 7.

Примечание . File -> ExportЭкспорт тысяч этих элементов займет вечность.

Зависит от того, хотите ли вы текущие изменения каждого изображения или основного файла. Текущие изменения потребуют от вас экспорта. Мастеров можно выкопать из Библиотеки оптом.
Вы хотите, чтобы ваш диск был отформатирован как ExFAT, чтобы ПК с Windows мог читать ваш диск.
Или вам нужно будет использовать стороннее программное обеспечение на ПК, чтобы оно могло читать диск Mac.

Ответы (5)

Если вы просто хотите, чтобы вся структура Masters была скопирована на новый диск, то

  • сначала найдите файл iPhoto или библиотеки фотографий. Расположение по умолчанию для обоих — ~/Pictures/

  • Щелкните правой кнопкой мыши файл библиотеки и выберите «Показать содержимое пакета» — это покажет «файл» как папку, которой он является на самом деле.

  • Папка Masters должна быть внутри. Вы можете скопировать это куда угодно.
    Разбивается на годы, затем на месяцы. Не все содержащиеся папки будут фактически заполнены, если старые фотографии когда-либо были удалены, файловая структура останется.

Как указано в комментариях, если вам нужно, чтобы скопированная структура изначально читалась в Windows, вам следует отформатировать целевой диск как ExFAT.
Windows изначально не может читать диски Mac OS Extended, и для этого потребуется поддержка сторонних производителей.

По сути, это обеспечивает минимальную функциональность экспорта. Таким образом вы потеряете всю организацию своей библиотеки и теги. Нет ли лучшего варианта?
Не экспортировать ни для чего, кроме фотографий.

Я знаю, что это старо и на него есть ответ, но я думаю, что сценарий, который я собрал после дня поиска в Google и попыток, стоит того, чтобы поделиться им.

Измените параметры, и этот сценарий либо переместит, либо скопирует ваши оригиналы в папку с именем «гггг-мм-дд название вашего альбома». Таким образом, вы отслеживаете оригинальные названия альбомов, и все фотографии также сортируются по дням.

Измените в соответствии с вашими потребностями. Я делаю это, чтобы иметь общую файловую базу исходных фотографий, синхронизированную с помощью Dropbox, и все пользователи, предоставляющие общий доступ, могут иметь свою собственную копию Photos.app, используя ее в качестве базы для фотографий, на которые есть ссылки.

Он пытается избежать перезаписи фотографий с тем же именем, сначала проверяя, существует ли уже неидентичный файл по тому же пути.

Кроме того, он устанавливает временную метку вновь созданных папок на дату событий, которые в них есть. Приятно сортировать события по дате в поисковике или где-то еще, хотя имена папок уже начинаются с даты (потому что, если вы скопируете их в другое место, временные метки все равно могут измениться).

Он совместим с одинарными кавычками в названиях альбомов. Это может быть совместимо с кавычками, но я НЕ проверял это.

#!/bin/bash

#### A few options ####
#dryrun=1
dryrun=0

# Choose to duplicate (slow, space eating) or move (space saving, fast if on same drive).
#action=cp
action=mv

# set your paths
# origin:
libr="Photos Library.photoslibrary"
# destination:
destpath="MyProperlyOrganizedFotos"

# no idea why Apple chooses a funny date. Adjust to your time-zone needs
dateoffset=978307200
#### End of options ####


sqllib="${libr}"/Database/apdb/Library.apdb
s="sqlite3 ${sqllib}"
#${s} 'select fileName,imageDate,imagePath,projectUuid from RKMaster'

${s} 'select fileName,imageDate,imagePath,projectUuid from RKMaster' | sed 's,",thisisaquotationmark,g' | while read -r line; do
  echo $line
  name=`echo "$line" | awk 'BEGIN {FS="|"} {print $1}'`
  date=`echo "$line" | awk 'BEGIN {FS="|"} {print $2}'`
  path=`echo "$line" | awk 'BEGIN {FS="|"} {print $3}'`
  albumid=`echo "$line" | awk 'BEGIN {FS="|"} {print $4}'`
  albumname=`${s} "select name from RKFolder where uuid == '${albumid}'" | sed -e 's,/,:,g' -e 's,!,,g' -e 's,",thisisaquotationmark,g'`
  realdate=`date -r $(( ${dateoffset} + ${date} )) '+%Y-%m-%d' `
  touchdate=`date -r $(( ${dateoffset} + ${date} )) '+%Y%m%d1200' `

  # does this file still exist? or did we move it already?
  src=`echo ${libr}/Masters/${path} | sed 's/thisisaquotationmark/\\"/g'`
  if [ ! -f "${src}" ]; then
    continue
  fi

  # trim:
  newpath=`echo $realdate $albumname | sed 's/thisisaquotationmark/\\\\"/g'`
  if [ ! $dryrun -eq 1 ]; then
    expandednewpath=`echo ${newpath}`
    mkdir -p "${destpath}/${newpath}"
    touch -t ${touchdate} "${destpath}/${newpath}"
  fi
  target="${destpath}/${newpath}/${name}"
  index=0

  # add an integer index to a file if the name exists in this path already
  while [ -f "${target}" ] && ! cmp --silent "${target}" "${src}" ; do
    echo 'Avoiding overwrite: ' $index
    index=$(( $index + 1 ))
    target="${destpath}/${newpath}/${name} $index"
  done
  if [ $dryrun -eq 1 ]; then
    echo "Would do ${action} '${src}' '${target}' "
  else
    echo "${action} '${src}' '${target}' "
    ${action} "${src}" "${target}"
  fi
done

Несколько обновлений и дополнений:

  1. Вы не найдете папку Masters в Catalina и Big Sur. Теперь он называется «Оригиналы».

  2. Копировать папки Masters или Originals непросто. Эти папки содержат ряд вложенных папок и вложенных вложенных папок. И вы экспортируете исходные неотредактированные версии ваших фотографий, т.е. вы потеряете изменения.

  3. Фотографии на диск больше не доступны. Это было здорово до Мохаве, но сломалось на Каталине из-за изменений в структуре базы данных фотографий. В Mac App Store появилось новое приложение Photos Takeout , которое работает на High Sierra, Mojave, Catalina и Big Sur.

  4. Приложение Photos Takeout экспортирует элементы, хранящиеся локально (в библиотеке фотографий на Mac), во внешнем хранилище (ссылочные файлы) или в библиотеке фотографий iCloud.

Photos To Disk утверждает, что делает именно это:

Используя Photos To Disk, вы можете извлечь исходные фотографии и видео (включая фотографии в формате файлов RAW) из своей библиотеки фотографий всего за несколько простых шагов.

Вы можете настроить структуру папок, чтобы сгруппировать медиафайлы по годам, месяцам или дням. Для альбомов Photos To Disk использует структуру папок, определенную в Photos.

Медиафайлы можно переименовывать в соответствии с заголовками, которые вы в конечном итоге определили в Фото. Вы также можете добавлять префикс к именам файлов с датами мультимедиа или датами/часами мультимедиа.

Метаданные (название, описание, местоположение, ключевые слова, измененная дата и время) могут быть встроены в файлы изображений JPEG, PNG, TIFF и PSD или сохранены в дополнительных файлах XMP для других форматов файлов изображений (например, RAW).

Существует отличный сценарий Apple с https://origin-discussions-us.apple.com/thread/7641108?start=0&tstart=0 .

set dest to "/Users/me/Desktop/export/" as POSIX file as text -- the destination folder (use a valid path)

tell application "Photos"
    with timeout of 180000 seconds
        repeat with i in albums
            set tFolder to dest & (get name of i)
            my makeFolder(tFolder) -- create a folder named (the name of this album) in dest
            export (get media items of i) to (tFolder as alias) without using originals
        end repeat
    end timeout
end tell

on makeFolder(tPath)
    do shell script "mkdir -p " & quoted form of POSIX path of tPath
end makeFolder
Пожалуйста, добавьте больше контекста, чем просто ссылку, так как они часто устаревают. Достаточно цитаты с сайта.
Имейте в виду, что при этом экспортируются только именованные альбомы. Если фотографии нет в именованном альбоме (и это не относится к общим альбомам), она не будет экспортирована.