我正在尝试在关闭 Google Suite 帐户之前下载所有用户的数据。我已经创建了导出。我安装了 Google Cloud SDK Shell 并对其进行了身份验证。我运行
gsutil cp -r gs://takeout-export-xxxxxxxxxxxx C:\GExport
并且它下载了“R”之前的所有文件夹,但是当它到达第一个“资源:-xxx”文件夹时,它会失败并显示
OSError:目录名称无效。
这些文件夹似乎没有太有用的数据,所以我什至尝试删除它们(从网站界面)但它们总是无法删除。
什么给予?我怎样才能下载所有用户文件夹而不需要手动一次下载一个?
编辑:
我尝试在网站 GUI 中选择每个文件夹(减去有问题的文件夹)并选择下载,这样它就给了我下载这些文件夹的命令。我尝试将这些命令复制/粘贴到 GCloud SDK Shell 中,但似乎不起作用。当它到达第二行(要下载的第一个文件夹)时它会失败。显然不确定尝试下载许多文件夹的正确语法(谷歌建议的命令不正确)。
最终放弃了“正确”的方式,并将命令修改为多行,一次抓取每个文件夹,将命令复制/粘贴到 GCloud SDK 中并让他们一次下载一个。 Notepad++ 太有用了
我遇到了同样的问题,这里的答案帮助我节省了很多时间。 我最终编写了一个 powershell 脚本来执行此操作。我将其包含在下面以帮助任何遇到此问题的人:
# Define the base URL for the Google Cloud Storage folders
$baseURL = "gs://takeout-export-xxx/xxx/Resource: "
# Define the IDs of the folders to download
$folderIDs = @(
"-xxx",
...
)
# For each folder ID, create a local folder and download the contents of the GCS folder
foreach ($folderID in $folderIDs) {
# Create a local folder name by replacing the ":" character with an underscore
$localFolderName = $folderID -replace ":", "_"
$localFolderName = "Resource " + $localFolderName
# Create the local folder if it doesn't exist
if (!(Test-Path -Path $localFolderName)) {
New-Item -ItemType Directory -Path $localFolderName
}
# Change to the local folder
Set-Location -Path $localFolderName
# Construct the full URL of the GCS folder
$fullURL = $baseURL + $folderID
# List all the files in the GCS folder
$files = gsutil ls "`"$fullURL`""
# For each file, download it and replace any illegal characters in the filename
foreach ($file in $files) {
# Get the filename and replace any illegal characters
$fileName = Split-Path -Leaf $file
$safeFileName = $fileName -replace ":", "_"
# Download the file
gsutil cp "`"$file`"" $safeFileName
# Pause for 1 seconds to check for errors
Start-Sleep -Seconds 1
}
# Change back to the parent folder
Set-Location -Path ..
}