我在 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/