感觉这个很精致
我有各种文件夹,我想将项目备份到 zip/tar 文件中,但想避免备份pyc文件和临时文件等文件。
我还有一个需要备份的 Postgres 数据库。
将此操作作为 python 脚本运行的任何提示?
另外,是否有办法阻止进程占用进程中的资源?
帮助将不胜感激。
感觉这个很精致
我有各种文件夹,我想将项目备份到 zip/tar 文件中,但想避免备份pyc文件和临时文件等文件。
我还有一个需要备份的 Postgres 数据库。
将此操作作为 python 脚本运行的任何提示?
另外,是否有办法阻止进程占用进程中的资源?
帮助将不胜感激。
如果您使用的是 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_DEFLATED
在zipfile.ZipFile
调用中添加第三个参数)。再简单不过了。
在 linux 上,您可以使用 tar--exclude
选项。一个例子,排除你的.pyc
文件和临时文件(在这个例子中,.tmp
)
$ tar zcvf backup.tar.gz --exclude "*.tmp" --exclude "*.pyc"
也可以使用该z
选项将其压缩。
使用今天的多核 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 调度类和优先级。
备份至少与使用您所做的任何备份进行恢复的重要性一样重要。
备份源代码的正确方法是将源文件保存在 VCS(版本控制系统)中,并备份 VCS 存储库。从 VCS 存储库中排除任何自动生成的易于替换的文件(如那些*.pyc
文件等)。我推荐Bazaar以获得非常高效的存储和用户友好性,但您的团队可能已经拥有他们喜欢的 VCS。
对于 PostgreSQL 数据库的备份,最好使用pg_dump
定期将数据库转储到文本文件,压缩并备份结果。这是因为通过将数据库转储重新播放到另一个 PostgreSQL 服务器,备份可以在任何机器上恢复。
至于如何自动化它:最好使用 Bash 程序,因为它只是将一些命令连接到文件的问题,这是 shell 擅长的。