如何压缩谷歌驱动器中的文件?

时间:2015-01-07 05:32:05

标签: google-apps-script compression google-drive-api

有没有办法将大文件压缩成google驱动器中较小的.zip .tar.gz文件?我尝试了谷歌appscript,但它创建了.zip文件,但没有压缩。怎么做?

3 个答案:

答案 0 :(得分:5)

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

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

Google云端硬盘:

我的云端硬盘

数据集

步骤:

  1. 打开Google Colab(免费),创建一个新笔记本
  2. 通过运行以下命令行将Google驱动器安装到Google Colab:

    from google.colab import drive drive.mount('/content/gdrive')

    注意:现在,在左侧(文件)中,您可以在 gdrive 中看到我的驱动器,在我的内部看到文件夹数据集开车

压缩前的屏幕截图。

Colab Drive Mount

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

    cd gdrive/My Drive/

  2. 压缩文件/文件夹:使用以下命令运行数据集 Dataset.zip

    !zip -r Dataset.zip Dataset/

压缩后的屏幕截图:

Colab Drive Mount after zipping

Google Drive Screenshot after zipping

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

!unzip filename.zip -d ./filename

答案 1 :(得分:3)

我已经尝试并使用pdf文件测试了以下代码,该文件位于我的10MB大小的驱动器中,它确实压缩了9MB。我甚至测试过Drive文件(幻灯片),它确实压缩了它。

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'));

}

希望有所帮助!

答案 2 :(得分:1)

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

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

此外,如果您在文件夹中有多个具有相同名称的文件,它将无法使用... Google云端硬盘文件夹支持该功能,但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'));

Source