【问题标题】:compress dir to same size split files,depressed files individual?将目录压缩成相同大小的分割文件,单独压缩文件?
【发布时间】:2020-04-27 01:50:05
【问题描述】:

我需要通过网络传输一个1G的文件夹,我发送和接收的数据格式都在我的控制之下。为了加快数据的接收,我现在这样做:

  1. 传输前先压缩1G文件夹再传输。

  2. 全部下载后解压。

可以减少一些时间,因为传输的数据量变小了,但是解压也需要时间。是否可以将一个文件夹压缩成多个相同大小的文件,下载一个文件,解压一个文件,所有文件解压后就是初始文件夹?我的问题是:

  1. 这可以实现吗?
  2. 如何在下载文件时解压缩文件?
  3. 如何减少下载和解压时间?

【问题讨论】:

  • rsync -z 会自动执行此操作。另一个常见的技巧是使用tar cz mydir | ssh yourhost tar xzv,它也可以即时压缩和解压缩
  • 传输通道不可控。我只能发送一个数据包到传输通道进行传输
  • 不确定你的意思。 “向传输通道发送一个数据包”是什么意思?你的意思是只发送一个文件?你说的这个“传输通道”是什么? IP 网络?
  • 是的,只发送一个文件。传输通道是一个doip网络,客户端一次读取1K字节然后传输,服务器接收1K数据并调用回调函数。我可以在回调函数中做一些事情。

标签: linux


【解决方案1】:
  1. 假设原始文件夹在 HOME 目录中。使用如下命令制作 1G 文件夹的 tar 存档,

    光盘; mkdir tmp; tar -cvzf tmp/original-folder.tar.gz 原始文件夹

  2. 使用 split 命令将 tar 归档文件拆分为小文件,例如 xaa、xab、...,例如,

    拆分 --bytes=100000000 original-folder.tar.gz

  3. 使用 cat 命令在目的地连接碎片,

    cat xaa xab xac [...] > 转移文件夹.tar.gz

  4. 解压得到文件夹

    tar -xvzf 转移文件夹.tar.gz

【讨论】:

  • 在进行第3步之前,需要确保所有文件都已经传输完毕,不会减少解压时间,如果有什么方法可以下载一个包并解压一个包,当所有的包都下载了,几乎所有的包都解压了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多