Найти тему
Антон Савченко

Резервирование Google Photo на Synology с помощью gphotos-sync

Оглавление

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" и устанавливаем

*Запускать его не надо, во вкладке "Контейнер" этот образ должен отсутствовать!

-2

Теперь необходимо создать файл client_secret.json, для этого переходим на Google Cloud Platform и логинемся под своим аккаунтом.

Нажимаем кнопку "Создать проект"

-3

Пишем название проекта gphotos-sync, нажимаем создать.

-4

Далее разблокируем функции API для нашего проекта.

Переходим на сайт https://console.cloud.google.com/projectselector2/apis/library

Выбираем наш проект, нажимаем открыть.

-5
-6

в поиске пишем "photos" и выбираем "Photos Library API".

-7

Тыкаем "Включить"

-8

Переходим на Google Cloud Platform, убеждаемся что выбран наш проект gphotos-sync, переходим на вкладку "Окно запроса доступа OAuth", выбираем "Внешнее" > "Создать".

-9

На странице "Изменение данных для регистрации приложения"

Заполняем обязательные поля:

Название приложения > gphotos-sync
Эл. адрес службы поддержки > ***@gmail.com
Адреса электронной почты > ***@gmail.com

Затем нажимаем 3 раза кнопку "Сохранить и продолжить" и последнюю "К панели управления"

Переходим на вкладку Учетные данные

-10

Нажимаем "Создать учетные данные", выбираем "Идентификатор клиента OAuth"

-11

Выбираем приложение для ПК, пишем Имя, нажимаем "Создать"

-12

...просто нажимаем OK

-13

и наконец-таки копируем файл client_secret.json

-14

Теперь почти все готово, осталось собрать все в одно целое.

На Synology нам нужно создать две папки

/storage - место, где будут храниться БД и сами фото

/config - сюда мы положим скаченный json файл

у меня пути выглядят следующим образом:

/volume1/docker/gphotos-sync/storage
/volume1/docker/gphotos-sync/config/client_secret.json

Теперь сделаем всю работу по расписанию, переходим Synology > Панель управления > Планировщик задач

Создаем новый "Скрипт, заданный пользователем"

-15

Пишем имя скрипта, настраиваем под себя удобное расписание

-16

Переходим в "Настройки задачи" вставляем одной строчкой следующий скрипт

/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

, получить ссылку, вставить в браузер, авторизоваться, вставить полученный ключ обратно в терминал

Проверяем, радуемся

-17

Если кто знает способ для синхронизации 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 и тыкнуть кнопку Переиндексировать

-18

Незабываем, что команду монтирования необходимо добавить в автозагрузку при старте, Trepepi рекомендует это сделать в \etc\rc.local, я такого файла не нашел поэтому сделал все так же через планировщик

mount --bind /volume1/docker/gphoto-sync/storage/photos /volume1/homes/USER/Drive/Moments/photo-mount
-19

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 нормально не работал, контейнер запускался, но ничего не происходило.

-20