1

我正在制作一个 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
4

2 回答 2

5

一个非 python 选项是使用pv命令行程序(手册页),它在 Universe 存储库中可用:

apt-get install pv

现在,您可以通过管道pv获取关于到目前为止已写入输出文件的数据量的持续更新:

pg_dump base | pv > base.sql

当然,pv在这种情况下无法知道最终大小,因此它只会显示到目前为止管道传输的数据量。如果你有一个猜测,你可以提供-s参数,你会得到一个正确的进度条:

pg_dump base | pv -s 500M > base.sql

是我找到的一篇博客文章,其中包含安装说明、示例和屏幕截图。

于 2013-07-30T12:51:28.893 回答
0

我不认为你可以,直到所有文件都写入硬盘。

为了制作进度条,您必须知道100%文件占用的空间是多少。只有这样,通过使用该数字和您正在编写的文件使用的当前空间,您才能计算当前写入文件的百分比。

于 2013-07-30T12:48:20.520 回答