由于一些失控的糟糕脚本,一些原本要存档的文件被压缩了五六次。因此有这样的文件:
a_log_file_0.log.1.tar.gz.tar.gz.tar.gz.tar.gz.tar.gz
请问我该如何修复此类有问题的文件?
答案1
您必须解开已应用于您的文件的所有级别的 tar。如果你的文件是由类似的东西创建的
tar czf a_log_file_0.log.1.tar.gz a_log_file_0.log.1
tar czf a_log_file_0.log.1.tar.gz.tar.gz a_log_file_0.log.1.tar.gz
...
你可以像这样一步一步地解压它:
tar xzf a_log_file_0.log.1.tar.gz.tar.gz.tar.gz.tar.gz.tar.gz
tar xzf a_log_file_0.log.1.tar.gz.tar.gz.tar.gz.tar.gz
tar xzf a_log_file_0.log.1.tar.gz.tar.gz.tar.gz
---
您可能需要确保 tar.gz 文件不包含其他可能因被放到tar
错误位置而毁坏您的系统的内容,甚至可能覆盖重要数据。
您可能需要确保有足够的磁盘空间来提取多级 tar 文件。
您可能需要删除文件的中间提取版本。
如果你已经手动为几个这样的 tar 文件做过同样的操作,而且如果如果你确定每个 gzip 压缩的 tar 档案中只有一个文件,那么你可能想要像这样自动进行多级提取:
file=a_log_file_0.log.1.tar.gz.tar.gz.tar.gz.tar.gz.tar.gz
cp $file /tmp/
cd /tmp/
while echo $file | grep -n \\.tar\\..gz
do
zfile=${file%.tar.gz}
tar xzf $file
rm $file
file=$zfile;
done
如果名称与这个简短脚本中的名称意外不同,它将不起作用 - 这是故意的,因为多个 tar 档案结构不是预期的方式。
祝您提取愉快!