![将用户文件从 Windows 批量移动到 Google Apps](https://linux22.com/image/670427/%E5%B0%86%E7%94%A8%E6%88%B7%E6%96%87%E4%BB%B6%E4%BB%8E%20Windows%20%E6%89%B9%E9%87%8F%E7%A7%BB%E5%8A%A8%E5%88%B0%20Google%20Apps.png)
我希望将用户文件从 Windows Server 大规模迁移到 Google Drive。每个用户在 Windows Server 上都有自己的文件夹,我正在寻找一种批量迁移到每个用户的 Google Drive 的方法。
我有 1200 多个用户需要这样做(幸运的是,我没有数据限制)。我的时间范围也相当大,所以即使进展缓慢也没关系。
有谁见过这个问题的解决方案?
答案1
在对 Google Drive 进行工作方面的快速浏览后,发现了一个可能的解决方案:(警告:它不是很漂亮。事实上,它相当丑陋,但它可能有效。)
- 与管理员或角色帐户共享每个用户的 Google Drive 文件夹。
- 在服务器机器上登录该帐户。
使用批处理脚本中的变量(假设员工在 Windows 系统上具有与 Drive 相同的用户名)让脚本检测文件夹并自动将其放置在正确的驱动器文件夹中。
FOR %%c in (C:\Users\*.*) DO set FileName=%%c robocopy C:\Users\%FileName% C:\...\GoogleDrive\%FileName% /E /Z /TEE /LOG:migrationLog.log del %FileName% exit
背后的基本理论如下:http://learn.googleapps.com/products/drive/set-up-file-share
以下是 Microsoft 有关 robocopy 及其功能和属性的页面:https://technet.microsoft.com/en-us/library/cc733145.aspx
答案2
这是我最后做的
- 在 Google Apps 中创建服务帐号
- 设置适用于 Windows 的 Google Drive 同步实用程序
- 将所有文件和文件夹转移到同一个 Google Drive 帐户
- 创建 Google Apps 脚本以正确共享用户文件夹
这是我使用的 Apps 脚本,每个文件夹都有用户的名称:
function myFunction() {
//Top Level Directory that contains each users folder
var folder = DriveApp.getFolderById('0ByoBlv24h');
//Get a list of all the folders (also usernames)
var folders = folder.getFolders();
//Loop through all the folders
while(folders.hasNext()){
var thisFolder = folders.next();
//Get the username and email address
var username = thisFolder;
var email = username + '@domain.com';
//Add the user as an editor for this folder
thisFolder.addEditor(email);
//Add a name for the folder
thisFolder.setName(username + ' - Google Drive');
}
}