linux - 合并分割的 tar.gz 文件的某些部分 Linux 命令

标签 linux

我在 Linux 服务器上有一个很大的 tar.gz 文件(大约 63 GB)。该文件包含大约 1000 个压缩的 csv 文件。我需要将 csv 文件的数据保存在数据库中。

由于服务器空间有限,我无法一次性提取整个文件。因此,我将 tar.gz 文件分成 5 个部分(4 个 15 GB 的部分和 1 个 3GB 的部分),但没有合并所有这些,因为在提取完成时服务器将没有任何剩余空间。我合并了前两部分以创建一个新的 tar.gz 文件,并从中提取了 csv 文件。

当我尝试合并最后 3 个部分时,它没有生成有效的 tar.gz 文件,并且无法提取该文件。这个问题不是因为服务器空间,因为我删除了前两部分提取后不再需要的文件。

有没有什么方法可以将分割后的 tar.gz 文件的最后 3 部分合并为有效的 tar.gz 格式,然后提取?

用于分割的命令:

split -b 15G file.tar.gz parts

用于合并的命令:

cat parts* > combined.tar.gz

用于提取的命令:

tar zxvf file.tar.gz -C folderwhereextracted

最佳答案

您可以使用简短的 shell 脚本:

#/bin/sh

path='./path'
list="$path/*.tar.gz"
for file in `ls ./da/*.tar.gz.*`
    do
        let i++

        if [[ -f $(find $path/*.tar.gz.$i) ]]
            then
                echo "file $path/*.tar.gz.$i found."
                list="$list $path/*.tar.gz.$i"
            else
                echo "file $path/*.tar.gz.$i not found!"
        fi
    done
cat $list > full.tar.gz
tar zxvf ./full.tar.gz -C $path
# rm -rf $list

将路径放入具有相同名称的变量中。 取消注释最后一行以在解压后删除源文件。

关于linux - 合并分割的 tar.gz 文件的某些部分 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28178141/

相关文章:

linux - docker在ubuntu vs linux aarch64上构建

python - 我怎样才能让我写的这个python面板正确地通过管道传输到dzen?

java - java.io.FileDescriptor.sync() 在 Linux 上 fsync 目录吗?

java - 使用新的 java.util.Date() 返回 DST 落后一小时

linux - 在所有文件中搜索和替换 URL

linux - 以编程方式确定 Ubuntu 发行版和体系结构?

c++ - 控制 Linux 守护进程的 API

linux - SSH 远程命令结果未正确显示

linux - 这个典型的羊群示例是如何工作的?

用于在 Linux 环境中构建类 chroot 路径的正则表达式