Синхронизируйте все данные с Google диска для бизнеса в другой бизнес-аккаунт

#google-apps-script #google-drive-api #storage #google-drive-shared-drive

Вопрос:

Требования:

  • У меня есть две учетные записи рабочего пространства для бизнеса с доменами A и B
  • Мне нужно автоматически синхронизировать все в домене A для входа в систему с доменом B (если мгновенная синхронизация невозможна, также допускается один раз в день).
    • причина: просто для резервного копирования, если учетная запись A не работает по каким-либо неожиданным причинам

Есть ли какой-нибудь способ, которым я мог бы это сделать? ( либо путем кодирования с помощью api, либо с использованием существующей службы )

=================================================================

  • почему уже предоставленный ответ не является удовлетворительным?
    • «Возможно, есть альтернативы» — это не точный ответ»
    • вход в несколько учетных записей на Google диске для рабочего стола не является решением. Он просто монтирует два диска на ПК.

Комментарии:

1. Работает ли для вас общий доступ к папке? Вы не думали использовать инструмент «Диск для рабочего стола» для синхронизации обоих дисков с->из папки? Каков ваш вариант использования. Пожалуйста, будьте более подробны.

2. @Антенны, какая часть вопроса вас смущает? Я думаю, что это уже хорошо определено

3. @Привод антенн для рабочего стола не работает для 2 учетных записей

4. В настоящее время Google Диск для настольных компьютеров поддерживает несколько учетных записей.

5. Для этого нет канонического решения (по крайней мере, такого, о котором я знаю). Но вы можете попробовать поэкспериментировать с Push-уведомлениями API привода, они могут оказаться полезными при создании решения, соответствующего вашим требованиям.

Ответ №1:

Прежде всего позвольте мне заявить, что нет ничего из коробки, что позволило бы вам это сделать. Как вы и просили, возможные решения для кодирования.

Я делал что-то подобное в прошлом, только не с учетными записями рабочей области. TBH с рабочим пространством было бы проще.

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

Это можно сделать на любом серверном языке программирования, для большинства из которых существуют клиентские библиотеки, поддерживающие учетные записи служб, C#, php, python и даже node.js.

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

После этого у вас будет доступ.

Тогда это будет вопрос программирования.

Я бы выбрал все файлы и диск A, а затем сравнил их с диском B. Существует несколько способов сравнения, было ли что-то изменено или нет. Если файл был изменен, я бы предварительно сформировал обновление, если файл был создан, я бы вставил его.

С удалением все становится сложнее. Поскольку затем вам нужно будет выбрать все на диске B и посмотреть, существует ли оно в A, если это не так, файл следует удалить.

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

То, что я делал раньше

Как вы и просили expect a working method instead of saying it is possible without any prove and reference

Было бы невозможно предоставить вам полностью рабочий метод, как вы просили, поскольку я не знаю языка программирования, который вы будете использовать, и у меня нет доступа к структуре ваших учетных записей дисков.

Кроме того, переполнение стека-это не сервис кодирования, но я рад дать вам небольшой толчок к дизайну.

Это общее представление о том, что я делал в прошлом.

 file.list from drive A
    Loop though each file
         Compaire file from A to file from B
               If file does not exist
                     File.insert to file B
               If file does exist
                     Either check for change or just do file.update

File.list from drive B
      Loop though each file
          Compaire file from b to files from A
                Does file not exist
                       Delete from b
 

Комментарии:

1. Ты считаешь это слишком легким делом. Диск имеет структуру каталогов. Кроме того, все дерево каталогов огромно, когда вы перечисляете файлы, некоторые из них, возможно, уже изменились. А временная сложность огромна, она составляет не менее O(n_square)

2. Как я наставлял, я уже делал это раньше для клиента. Насколько это было просто, я думаю, зависит от опыта разработчиков. Это может быть связано с тем фактом, что у меня двенадцатилетний опыт работы с API Google и двадцатипятилетний опыт программирования. Это действительно не такая уж трудная проблема для решения. но знание большой буквы о не очень помогает в решении проблем, но это только мое мнение.

3. Вы говорите о том, сколько у вас лет опыта, но на самом деле я говорю, что ваш ответ бесполезен. Поскольку «все знают, что синхронизация заключается в создании файла, если он еще не создан. Удалите файл, если он уже удален в исходном файле». Я уже пытался восстановить всю древовидную структуру раньше, это занимает очень много времени. Похоже, у вас нет опыта работы с API Google диска.

Ответ №2:

Простого способа сделать это нет, но это выполнимо. Есть пара шагов, которые вам нужно выполнить.

  1. Выполните начальную синхронизацию между двумя дисками. Для этого потребуется запустить скрипт, который заново создаст структуру папок на вашем диске B и скопирует все файлы туда. Если громкость высока, вам нужно будет убедиться, что ваш сценарий обходит максимально разрешенное время выполнения сценария (в вашем случае, вероятно, 30 минут). Я уже создавал такое решение в прошлом. У меня также есть история об обходе максимального времени выполнения на носителе, которая решает аналогичную проблему, если вам интересно.
  2. Регулярно синхронизируйте все изменения с API активности диска. Таким образом, вы не будете копировать все при каждой синхронизации, а только те файлы и папки, которые были обновлены, удалены или созданы.

Это нелегкое дело, но его определенно можно выполнить.