gphotos-sync больше не будет работать после 15.03.2025
Google изменит области авторизации для Google Photos 15 марта 2025 года, как описано здесь . Инструменты резервного копирования, такой как gphotos-sync, больше не будет работать.
Если не трудно, прошу поставить +1 на IssueTracker Please ensure that upcoming scopes deprecation does not break gphotos-sync
Реп gphotos-sync отправлен в архив, дополнительно почитать можно по ссылке Google Photos API changes from March 2025
Ждем нормальное API от Google
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
После изменения политик с 10 июля 2019 года автоматическая синхронизация между Google Фото и Google Диском была отключена, т.е. нет возможности отображать папку с фотографиями в Google Drive и соответственно делать бэкапы с помощью Synology Cloud Sync.
Так как не было не одной нормальной статьи, только форумы и то буржуйские, на все было потрачено очень много времени и нервов.
Весь этот путь было решено написать здесь, может кому пригодиться
*Протестировано на Synology DS218+ и Xpenology (x64).
И так.
Для начала заходим в Synology > Центр пакетов и скачиваем Docker
Открываем его, переходим на вкладку "Реестр", ищем пакет "gilesknap/gphotos-sync" и устанавливаем
*Запускать его не надо, во вкладке "Контейнер" этот образ должен отсутствовать!
Теперь необходимо создать файл client_secret.json, для этого переходим на Google Cloud Platform и логинемся под своим аккаунтом.
Нажимаем кнопку "Создать проект"
Пишем название проекта gphotos-sync, нажимаем создать.
Далее разблокируем функции API для нашего проекта.
Переходим на сайт https://console.cloud.google.com/projectselector2/apis/library
Выбираем наш проект, нажимаем открыть.
в поиске пишем "photos" и выбираем "Photos Library API".
Тыкаем "Включить"
Переходим на Google Cloud Platform, убеждаемся что выбран наш проект gphotos-sync, переходим на вкладку "Окно запроса доступа OAuth", выбираем "Внешнее" > "Создать".
На странице "Изменение данных для регистрации приложения"
Заполняем обязательные поля:
Название приложения > gphotos-sync
Эл. адрес службы поддержки > ***@gmail.com
Адреса электронной почты > ***@gmail.com
Затем нажимаем 3 раза кнопку "Сохранить и продолжить" и последнюю "К панели управления"
Переходим на вкладку Учетные данные
Нажимаем "Создать учетные данные", выбираем "Идентификатор клиента OAuth"
Выбираем приложение для ПК, пишем Имя, нажимаем "Создать"
...просто нажимаем OK
и наконец-таки копируем файл client_secret.json
Теперь почти все готово, осталось собрать все в одно целое.
На Synology нам нужно создать две папки
/storage - место, где будут храниться БД и сами фото
/config - сюда мы положим скаченный json файл
у меня пути выглядят следующим образом:
/volume1/docker/gphotos-sync/storage
/volume1/docker/gphotos-sync/config/client_secret.json
Теперь сделаем всю работу по расписанию, переходим Synology > Панель управления > Планировщик задач
Создаем новый "Скрипт, заданный пользователем"
Пишем имя скрипта, настраиваем под себя удобное расписание
Переходим в "Настройки задачи" вставляем одной строчкой следующий скрипт
/usr/local/bin/docker run --tty --rm --name gphotos-sync -v /volume1/docker/gphotos-sync/storage:/storage -v /volume1/docker/gphotos-sync/config/client_secret.json:/config/client_secret.json:ro gilesknap/gphotos-sync --log-level INFO /storage > /volume1/docker/gphotos-sync/run.log
*Обращаю внимание что с ключом --it контейнер из под планировщика не запуститься, вместо этого используется ключ --tty, тоже самое будет если контейнер был уже создан, поэтому используется ключ --rm который после каждого запуска удаляет его.
**Результат выполнения-лог пишется в файл /volume1/docker/gphotos-sync/run.log
***Время первого выполнения скрипта у меня заняло около 15 минут, для отслеживания я запускал все это из под SSH, но можно не логониться просто дождитесь строчки "WARNING Done" в файле лога.
****при необходимости json можно спрятать в /root/.config/gphotos-sync/config/client_secret.json
***** Возможно при первом запуске контейнер будет попросить авторизацию через браузер (смотрите лог), если такое произойдет то необходимо запустить контейнер из под SSH
docker run --it --rm --name gphotos-sync -v /volume1/docker/gphotos-sync/storage:/storage -v /volume1/docker/gphotos-sync/config/client_secret.json:/config/client_secret.json:ro gilesknap/gphotos-sync --log-level INFO /storage
, получить ссылку, вставить в браузер, авторизоваться, вставить полученный ключ обратно в терминал
Проверяем, радуемся
Если кто знает способ для синхронизации Google Photo с Synology Moments, прошу написать об этом
UPD 03.12.2020
Спасибо Francesco Tripepi, для того что бы все это дело подгрузилось в Moments достаточно смонтировать папку /volume1/docker/gphoto-sync/storage/photos в следующую директорию /volume1/homes/USER/Drive/Moments/photo-mount
* по задумке автора директорию photo-mount необходимо создать заранее
Затем зайти в настройки Moment и тыкнуть кнопку Переиндексировать
Незабываем, что команду монтирования необходимо добавить в автозагрузку при старте, Trepepi рекомендует это сделать в \etc\rc.local, я такого файла не нашел поэтому сделал все так же через планировщик
mount --bind /volume1/docker/gphoto-sync/storage/photos /volume1/homes/USER/Drive/Moments/photo-mount
UDP 09.07.2023 Действительно первый раз необходимо перейти по ссылке, Геннадий ниже в комментариях добавил следующее:
Дополню немного.
1. Для того, чтобы получить токен при первом запуске контейнера надо запустить его в среде, где есть браузер(у меня это ноутбук с установленным Docker). Подробности от автора приложения: https://gilesknap.github.io/gphotos-sync/main/tutorials/installation.html#headless-gphotos-sync-servers Необходимо настроить каталоги для запуска и запускать контейнер с ключами --skip-files --skip-albums --skip-index для того чтобы приложение в контейнере не пыталось синхронизировать фотографии, а только сформировался токен. Токен появится после перехода по ссылке из сообщения в консоли(надо прокликать на разрешения и согласиться с тем, что приложение тестовое) в виде файла в каталоге, который примонтирован к storage и будет называться .gphotos.token Этот файл необходимо перенести в соответствующий каталог на вашей NAS. После этого контейнер будет запускаться без просьбы авторизоваться.
2. В планировщике у меня получилось запустить контейнер только под пользователем, который является админом NAS, из-под root нормально не работал, контейнер запускался, но ничего не происходило.