2

感觉这个很精致

我有各种文件夹,我想将项目备份到 zip/tar 文件中,但想避免备份pyc文件和临时文件等文件。

我还有一个需要备份的 Postgres 数据库。


将此操作作为 python 脚本运行的任何提示?

另外,是否有办法阻止进程占用进程中的资源?


帮助将不胜感激。

4

4 回答 4

4

如果您使用的是 Linux(或任何其他形式的 Unix,例如 MacOSX),那么一种降低进程优先级的简单方法——因此,如果其他进程需要,间接降低它对 CPU 的消耗——是nice命令。在 Python(相同的操作系统)中,os.nice让您的程序“让自己变得更好”(降低优先级 &c)。

对于备份 PostgreSQL 数据库,我推荐PostgreSQL 自己的工具;对于压缩除 pyc 文件(和临时文件——但您可以识别它们)之外的文件夹,Python 非常适合。例如:

>>> os.chdir('/tmp/az')
>>> f = open('/tmp/a.zip', 'wb')
>>> z = zipfile.ZipFile(f, 'w')
>>> for root, dirs, files in os.walk('.'):
...   for fn in files:
...     if fn.endswith('.pyc'): continue
...     fp = os.path.join(root, fn)
...     z.write(fp)
... 
>>> z.close()
>>> f.close()
>>> 

这会压缩所述子树中的所有文件,除了那些以结尾的文件.pyc(不压缩——如果你想要压缩,zipfile.ZIP_DEFLATEDzipfile.ZipFile调用中添加第三个参数)。再简单不过了。

于 2010-03-24T02:34:41.203 回答
2

在 linux 上,您可以使用 tar--exclude选项。一个例子,排除你的.pyc文件和临时文件(在这个例子中,.tmp

$ tar zcvf backup.tar.gz --exclude "*.tmp" --exclude "*.pyc"

也可以使用该z选项将其压缩。

于 2010-03-24T03:13:46.153 回答
1

使用今天的多核 cpu,您可能会发现 cpu 不是瓶颈。现在更有可能需要更好地共享磁盘 I/O。

Linux 有 ionice 命令可以让你控制它

离子(1)

姓名

   ionice - get/set program io scheduling class and priority

概要

   ionice [[-c class] [-n classdata ] [-t]] -p PID [PID ...]

   ionice [-c class] [-n classdata ] [-t] COMMAND [ARG ...]

描述
该程序设置或获取程序的 io 调度类和优先级。如果没有参数或只给出 -p,ionice 将查询该进程的当前 io 调度类和优先级。

于 2010-03-24T05:04:14.827 回答
1

备份至少与使用您所做的任何备份进行恢复的重要性一样重要。

备份源代码的正确方法是将源文件保存在 VCS(版本控制系统)中,并备份 VCS 存储库。从 VCS 存储库中排除任何自动生成的易于替换的文件(如那些*.pyc文件等)。我推荐Bazaar以获得非常高效的存储和用户友好性,但您的团队可能已经拥有他们喜欢的 VCS。

对于 PostgreSQL 数据库的备份,最好使用pg_dump定期将数据库转储到文本文件,压缩并备份结果。这是因为通过将数据库转储重新播放到另一个 PostgreSQL 服务器,备份可以在任何机器上恢复。

至于如何自动化它:最好使用 Bash 程序,因为它只是将一些命令连接到文件的问题,这是 shell 擅长的。

于 2010-03-24T05:34:44.163 回答