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

tar预运行以评估文件的预期大小或数量,tar,evaluate,Tar,Evaluate,问题是: 我有一个后端流程,在某个时候,他收集并构建了一个大的tar文件。 此tar接收很少的目录和排除文件。 这个过程可能需要几分钟,我想在我的前端过程(GUI)中报告称重过程的进展情况(这对于按下下载按钮的用户来说是一个大问题,似乎什么都没有发生……) 我知道我可以在tar命令中使用-v-R并计算文件数和大小进度,但我正在寻找某种tar预运行模式/干运行,以帮助我评估预期的文件数或预期的tar大小 我正在使用的命令:tar-jcf'FILE.tgz''exclude_files''inclu

问题是: 我有一个后端流程,在某个时候,他收集并构建了一个大的tar文件。 此tar接收很少的目录和排除文件。 这个过程可能需要几分钟,我想在我的前端过程(GUI)中报告称重过程的进展情况(这对于按下下载按钮的用户来说是一个大问题,似乎什么都没有发生……)

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

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


10倍于所有愿意提供帮助的人。

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

包含文件列表(详细):

没有:

[git@server]$ tar czf - ./test-dir | wc -c
2734080
你为什么不开一家公司呢

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

的第一列。为了给将来的读者提供信息,
-
告诉tar输出到stdout(它将通过管道传输到wc)。确认:此解决方案是否为“tar预运行模式/干运行,以帮助我评估预期的文件数或预期的tar大小”(不实际压缩/创建tar)?我注意到tar和find在文件数量上并不总是一致的;e、 例如,在我的Mac电脑上,tar似乎跳过了为Finder预览编制索引的文件,而find没有。
DIRS=("./test-dir" "./other-dir-to-test")
du -c -d 0 ${DIRS[@]} | tail -1 | awk -F ' ' '{print $1}'