我正在制作一个postgres基础的转储文件。
通过使用pg_dump base > base.sql
,postgres创建base.sql
,但在进程未完成之前,文件显示为0字节。
有没有办法获取文件的大小来制作一种进度条?
我用os.stat()尝试了python,但它也显示了0个字节:
>>> import os
>>> file = os.stat('base.sql')
>>> file.st_size
>>> 0L
答案 0 :(得分:5)
一个非python选项是使用Universe存储库中提供的pv
命令行程序(man page):
apt-get install pv
现在,您可以通过pv
来管理到目前为止已经将多少数据写入输出文件的持续更新:
pg_dump base | pv > base.sql
当然,在这种情况下,pv
无法知道最终大小,因此它只会显示到目前为止传输的数据量。如果你有一个估计,你可以提供-s
参数,你将获得一个正确的进度条:
pg_dump base | pv -s 500M > base.sql
Here是我发现的一篇博文,其中包含安装说明,示例和屏幕截图。
答案 1 :(得分:0)
我不认为你可以,直到所有文件都写入硬盘。
要创建进度条,您必须知道文件在100%
占用的空间是多少。只有这样,通过使用该数字和您正在编写的文件使用的当前空间,您才能计算当前写入文件的百分比。