google-drive-api - 如何在 Windows 10 中压缩一个大文件夹,将其上传到 GDrive,然后解压缩?

标签 google-drive-api zip compression google-colaboratory 7zip

我有一个包含 22 个子目录的目录。总而言之,该目录的大小约为 750GB,我需要 GDrive 上的这些数据,以便我可以在 Google Colab 中使用它。显然上传这个需要一定的时间(特别是我的网速很慢)所以我想压缩它,上传它,然后在云中解压缩。 我正在使用 7zip 并使用 zip 格式和“正常”压缩级别压缩每个子目录。 (编辑:现在可以确认我对 7z 和 tar 格式得到了同样的错误)。每个子目录最终大小在 14 到 20GB 之间。然后我将其上传并尝试使用以下代码在 Google Colab 中将其解压缩:

drive.mount('/content/gdrive/')
!apt-get install p7zip-full
!7za x "/content/gdrive/My Drive/av_tfrecords/drumming_7zip.zip" -o"/content/gdrive/My Drive/unzipped_av_tfrecords/" -aos

这会在引发错误之前提取 zip 文件的某些部分。有各种各样的错误,有时代码甚至不会在抛出错误之前开始解压缩文件。这是最常见的错误:

Can not open the file as archive

ERROR: Unknown error -2147024891

Archives with Errors: 1

如果我随后尝试重新运行 !7za 命令,它可能会在抛出此错误之前从 zip 文件中提取一个或两个文件:

terminate called after throwing an instance of 'CInBufferException'

它也可能提示 zip 存档中的特定文件:

ERROR: Headers Error : drumming/yt-g0fi0iLRJCE_23.tfrecords

我也尝试过使用:

!unzip -n "/content/gdrive/My Drive/av_tfrecords/drumming_7zip.zip" -d "/content/gdrive/My Drive/unzipped_av_tfrecords/"

但这只是开始抛出错误:

file #254:  bad zipfile offset (lseek):  8137146368

file #255:  bad zipfile offset (lseek):  8168710144

file #256:  bad zipfile offset (lseek):  8207515648

虽然我更喜欢 Colab 中的解决方案,但我也尝试过使用 GDrive 中可用的名为“Zip Extractor”的应用程序。但这也会引发错误并具有数据配额。

这已经发生在 4 个 zip 文件中,每次我尝试新的东西时,由于上传速度的原因,都需要很长时间才能尝试。对于为什么会发生这种情况以及我如何解决该问题的任何解释,将不胜感激。我也明白,除了我正在尝试做的事情之外,可能还有其他选择,即使他们没有直接回答问题,他们也将不胜感激。谢谢!

最佳答案

我遇到了同样的问题

解决方法

new ProcessBuilder(new String[] {"7z", "x", fPath, "-o" + dir)

使用命令行数组,而不仅仅是整行!

祝你好运!

Why does this command behave differently depending on whether it's called from terminal.app or a scala program?

关于google-drive-api - 如何在 Windows 10 中压缩一个大文件夹,将其上传到 GDrive,然后解压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60977320/

相关文章:

php - 在不使用 ziparchive 的情况下在 php 中创建一个 zip 文件

java - 在 Java 中解压缩文件时出现 ZipException

java - 将 Spring Boot 属性 server.compression.enabled 设置为 true 不会应用于自动配置的 Tomcat 服务器

google-drive-api - 使用 wget 从谷歌驱动器下载文件

google-apps-script - 将图像从驱动器添加到工作表

google-drive-api - 是否允许 Dataflow 读取指向 Drive 的 BigQuery 表?

google-drive-api - 如何在同步算法中使用更改源?

javascript - 如何让jszip生成相同的缓冲区

linux - xlsx 与 7z 的压缩方法

powershell - 根据名称压缩多个文件的脚本