我正在制作一个 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
我正在制作一个 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
一个非 python 选项是使用pv
命令行程序(手册页),它在 Universe 存储库中可用:
apt-get install pv
现在,您可以通过管道pv
获取关于到目前为止已写入输出文件的数据量的持续更新:
pg_dump base | pv > base.sql
当然,pv
在这种情况下无法知道最终大小,因此它只会显示到目前为止管道传输的数据量。如果你有一个猜测,你可以提供-s
参数,你会得到一个正确的进度条:
pg_dump base | pv -s 500M > base.sql
这是我找到的一篇博客文章,其中包含安装说明、示例和屏幕截图。
我不认为你可以,直到所有文件都写入硬盘。
为了制作进度条,您必须知道100%
文件占用的空间是多少。只有这样,通过使用该数字和您正在编写的文件使用的当前空间,您才能计算当前写入文件的百分比。