tar预运行以评估预期的文件大小或数量

时间:2013-04-24 06:10:43

标签: tar evaluate

问题: 我有一个后端进程,在某些时候他收集并构建一个大的tar文件。 此tar接收几个目录和一个排除文件。 这个过程可能需要几分钟时间,我想在我的前端程序(GUI)中报告皮重过程的进度(这对于按下下载按钮的用户来说是个大问题,似乎没有任何事情发生。 ..)。

我知道我可以在tar命令中使用-v -R并计算文件和大小进度但是我正在寻找某种tar预运行模式/干运行来帮助我评估预期的文件数量或者预期的焦油大小。

我正在使用的命令:tar -jcf 'FILE.tgz' 'exclude_files' 'include_dirs_and_files'

对于愿意提供帮助的每个人来说,这都是10倍。

2 个答案:

答案 0 :(得分:11)

您可以将输出传输到wc工具,而不是实际制作文件。

使用文件列表(详细):

[git@server]$ tar czvf - ./test-dir | wc -c
./test-dir/
./test-dir/test.pdf
./test-dir/test2.pdf
2734080

[git@server]$ tar czf - ./test-dir | wc -c
2734080

答案 1 :(得分:1)

为什么不运行

DIRS=("./test-dir" "./other-dir-to-test")
find ${DIRS[@]} -type f | wc -l

预先。这会获得每行一个文件(-type f)并计算文件数。 DIRS是bash中的数组,因此您可以将文件夹存储在变量

如果您想知道所有存储文件的大小,可以使用du

DIRS=("./test-dir" "./other-dir-to-test")
du -c -d 0 ${DIRS[@]} | tail -1 | awk -F ' ' '{print $1}'

这将使用du打印磁盘使用情况,计算总计(-c标志),获取最后一行(示例4378921 total),并仅使用第一列awk 1}}