如何压缩Google Drive中的文件?

问题描述 投票:0回答:4

有什么方法可以将大文件压缩为谷歌驱动器中较小的 .zip 或 .tar.gz 文件吗?我尝试了 google appscript 但它创建了 .zip 文件但没有压缩。如何做到这一点?

google-apps-script compression google-drive-api
4个回答
27
投票

我发现有一种高效、快速、简单但间接的方法可以使用 Google Colaboratory 将大文件压缩/解压缩到 Google Drive 中。

例如, 假设您的 Google 云端硬盘中有一个名为 Dataset 的目录,大小为 5 GB,任务是将其压缩(压缩)为 Dataset.zip

谷歌云端硬盘:

我的车程

数据集

步骤:

  1. 打开 Google Colab(免费),创建一个 新笔记本
  2. 通过运行以下命令行将 Google 驱动器安装到 Google Colab 中:
from google.colab import drive 
drive.mount('/content/gdrive')

注意:现在在左侧(文件),您可以观察 gdrive 中的 My Drive 以及 My Drive 中的文件夹 Dataset

压缩前的屏幕截图。

Colab 驱动器安装座

  1. 通过以下命令运行更改当前目录。

    cd gdrive/My Drive/

  2. 使用以下命令将文件/文件夹压缩为DatasetDataset.zip

    !zip -r Dataset.zip Dataset/

压缩后截图:

压缩后的Colab Drive Mount

压缩后的Google Drive截图

注意:以上命令受 ubuntu 启发。因此,对于解压使用:

!unzip filename.zip -d ./filename


3
投票

我已经尝试并使用我的驱动器中 10MB 大小的 pdf 文件测试了以下代码,它确实将其压缩为 9MB。我什至测试了一个云端硬盘文件(幻灯片),它确实压缩了它。

function fileZip(){
 var files = DriveApp.getFilesByName('Google_Apps_Script_Second_Edition.pdf');
  while (files.hasNext()) {
    var file = files.next();
 file = file.getBlob()}

DriveApp.createFile(Utilities.zip([file], 'tutorialFiles.zip'));

}

希望有帮助!


1
投票

实际上比这更容易。文件已经是 Blob(任何具有 getBlob() 的内容都可以传递到任何需要 Blob 的函数)。所以代码看起来像这样:

var folder = DocsList.getFolder('path/to/folder');
folder.createFile(Utilities.zip(folder.getFiles(), 'newFiles.zip'));

此外,如果文件夹中有多个同名文件,它将不起作用...Google Drive 文件夹支持这一点,但 Zip 文件不支持。

要使其适用于具有相同名称的多个文件:

var folder = DocsList.getFolder('path/to/folder');
var names = {};
folder.createFile(Utilities.zip(folder.getFiles().map(function(f){
  var n = f.getName();
  while (names[n]) { n = '_' + n }
  names[n] = true;
  return f.getBlob().setName(n);
}), 'newFiles.zip'));

来源


0
投票

使用 Google Drive 压缩服务:compress.mymultcloud

这是最好的方法(最快、最安全) - 结果不是一个新的 zip,而是压缩的相同文件。

© www.soinside.com 2019 - 2024. All rights reserved.