两个 Google Drive 共享驱动器之间的自动同步

Posted

技术标签:

【中文标题】两个 Google Drive 共享驱动器之间的自动同步【英文标题】:Automatic Syncing between two Google Drive Shared Drives 【发布时间】:2022-01-18 07:54:48 【问题描述】:

问题: 我有两个 Google 共享驱动器(团队驱动器),比如说 MoviesMoviesBackup。我需要将我上传到 Movies 的所有内容备份到 MoviesBackup。为此,我需要每天一次从 MoviesMoviesBackup 的单向同步。

我尝试过的: 我知道 Rclone,并使用它的命令行界面在两个共享驱动器之间进行同步。也许如果可以从 Google AppScript 使用 Rclone,我会设置一个每日触发器。但我似乎没有办法这样做。

任何其他可行的解决方案将不胜感激。

【问题讨论】:

大家好!告诉我这个问题是否不适合***。如果不是,请告诉在哪里发布。 我认为 Google Apps 脚本可以将文件从共享驱动器“A”复制到共享驱动器“B”。但是在您的情况下,我可以问您最大文件大小和要备份的文件数量吗?因为 GAS 有执行时间。当文件很大并且文件数量很大时,一个脚本运行可能无法完成该过程。我很担心这个。而且,在您的备份过程中,所有文件都被复制了吗?例如,是否通过检查修改时间、md5Checksum 等来复制文件?可以问一下你要备份的详细过程吗? @Tanaike,不幸的是,它们很大。 :( 是的,所有文件都被复制了。我想到了两种方法:1)在每次同步期间,MoviesBackup中的所有文件都会被删除,Movies中的所有文件都会被复制到MoviesBackup中> 从一开始。 2) 只会复制新文件。 2a) 现在,假设我在 Movies 中有一个文件,我已对其进行了更新(假设我已将 Interstellar.mp4 从 720p 更改为 1080p,现在它们具有不同的文件大小和 md5hash。所以,我也希望在 MoviesBackup 中更改 Interstellar.mp4。 我更喜欢 2,因为 1 会花费很多时间,而且 google 需要时间将 .mp4 转换为自己的视频格式。 【参考方案1】:

虽然我不确定这是否是您问题的直接解决方案,但在您的情况下,以下示例脚本怎么样?此示例脚本使用 Google Apps 脚本库。 Ref

使用此库时,可以将源文件夹复制到特定目标文件夹。并且,当源文件夹中的文件被更新时,更新后的文件被复制到目标文件夹作为覆盖。

用法:

1。安装库。

请在您的 Google Apps 脚本项目中安装 the library。安装方法见here。

2。示例脚本。

请将以下脚本复制并粘贴到您的 Google Apps 脚本项目的脚本编辑器中。并保存它。而且,在这个库中,使用了 Drive API。所以please enable Drive API at Advanced Google services。

并且,请将源和目标文件夹 ID 设置为以下 object

function myFunction() 
  const object = 
    sourceFolderId: "###", // Please set the source folder ID.
    destinationFolderId: "###", // Please set the destination folder ID.
    overwrite: true,
  ;
  const res = CopyFolder.copyAllFilesFolders(object);
  console.log(res);

注意:

当这个脚本第一次运行时,所有的文件都会被复制。而且,脚本运行 2 次后,只复制更新后的文件。

参考:

CopyFolder of Google Apps Script library

【讨论】:

以上是关于两个 Google Drive 共享驱动器之间的自动同步的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用Google Drive API V3与他人共享时设置文件的功能?

Google Drive - 视频流

在 android app 中访问 Dropbox、google drive、microsoft onedrive 等中的云共享文件

Google Drive api范围和文件访问(驱动器vs drive.files)

获取Google Drive SDK中共享用户的电子邮件地址

无法从 Google Drive API 检索 thumbnailLink