Bash脚本将大约1GB的文件打包到tar归档文件中

克里斯

我有几个包含数千个文件的文件夹,每个文件夹的大小约为3-10GB。现在,我想将这些文件放在文件夹中,并且每个tar文件的大小应约为1GB。在后端,我想使用Python处理这些tar文件。

#!/bin/bash

dirlist=$(find $1 -mindepth 1 -maxdepth 1 -type d)
stored_date=$(date +%Y-%m-%d --date="-1 day")
#stored_date='2019-10-23'

for dir in $dirlist
do
(
    cd $dir
    tar_file=${PWD##*/}  
    tar_file="${tar_file}_${stored_date}.tar"

    echo "${tar_file}"

    tar -c $stored_date*.html --tape-length=1000M  -f ${tar_file}  --remove-files
)
done

创建1GB的块效果很好,但是使用``--tape-length''选项,Python遇到了各种问题

tarfile.ReadError:数据意外结束

(加上:我也想使用Python处理在tar归档文件边缘分割的文件)

是否有Linux解决方案?我找到了星星而不是焦油,但还没有尝试过-如果可能的话,我宁愿选择标准焦油。

用户1404316

如何在每个目录循环中嵌套第二个循环以跟踪每个文件的大小,然后再将其附加到tar文件中?这是我的意思的示意伪代码:

max_size=$((1024*1024*1024))
total_size=0
for dir in $dirlist ; do
  for foo in $dir/*; do
    this_size="$(stat -c"%s" $foo)"
    if [ $(($total_size + $this_size)) -le $max_size ] ; then
      tar --append ... $foo
      total_size="$(($total_size + $this_size))"
    else
      # start new tar file here
      tar -c ... $foo
      total_size="$this_size"
    fi
  done
done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Linux上的Python脚本打包到Windows可执行文件中

将1GB文件的内容流到单列下的sqlite表中

Golang:将文件追加到现有的tar归档文件中

如何将.tar.gz文件打包到rpm包中

将tar.gz打包到shell脚本中

Gradle将资源与类文件打包到jar中

从tar归档文件中删除文件的grep输出列表

在Powershell中,当处理超过1GB的文件时,我收到“ OutOfMemoryException”

将python脚本打包到.exe文件中,同时保留导入的模块

使用通配符提取tar归档文件中的特定文件

如何在tar归档文件中安装文件?

Bash脚本将tar文件压缩为保存基本路径

如何在目录中添加tar归档文件中的文件?

将目录及其内容归档到zip归档文件中

Bash脚本编写并使用TAR归档文件夹,如何在一个文件夹中抓取5个最新的文件夹?

重命名tar归档文件中的目录

将参数从文件传递到bash脚本

估计将1GB文件从一个USB闪存复制到另一个USB闪存

tar目录,以将文件归档到要压缩的目录中

将CMake项目(libRocket)打包到.deb中,但是构建脚本位于子文件夹中

使用Shell脚本压缩目录中1GB以上的所有文件

使用tar自动归档卷中的文件

/ tmp中的Ubuntu 16.04(HyperV)非常大的文件,在系统空闲时保持大约1GB / h的速度增长,占用大量CPU和网络负载

如何将交换文件的大小从3.8 GB减少到1GB?

如何阻止tar将根路径归档到文件?

Bash - 将多个子文件夹从挂载的 fs 归档到本地文件夹

如何将大文件(12gb)拆分为多个 1GB 压缩(.gz)档案?C#

将 bash 输出重定向到 bash 脚本中的文件

在下载 1GB 文件时,JMeter 中未捕获的异常 java.lang.OutOfMemoryError