我觉得这很精致,
我有各种文件夹,我希望将其备份到zip / tar文件中,但希望避免备份 pyc 文件和临时文件等文件。
我还有一个需要备份的Postgres数据库。
有关将此操作作为python脚本运行的提示吗?
另外,无论如何都会阻止流程占用流程中的资源吗?
非常感谢帮助。
答案 0 :(得分:4)
如果您使用的是Linux(或任何其他形式的Unix,例如MacOSX),那么降低进程优先级的一种简单方法 - 因此间接地,如果其他进程需要某些进程,则间接地消耗CPU - 就是nice命令。在Python(相同的操作系统)中,os.nice可让您的程序“让自己变得更好”(降低优先级& c)。
为了备份PostgreSQL数据库,我建议PostgreSQL's own tools;为了压缩除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
)。几乎不容易。
答案 1 :(得分:2)
在linux上,您可以使用带--exclude
选项的tar。例如,要排除.pyc
文件和临时文件(在此示例中为.tmp
)
$ tar zcvf backup.tar.gz --exclude "*.tmp" --exclude "*.pyc"
使用z
选项将其压缩。
答案 2 :(得分:1)
对于今天的多核cpu,你可能会发现cpu不是瓶颈。现在更有可能需要更好地共享磁盘I / O.
Linux有ionice命令允许你控制这个
ionice(1)
NAME
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调度 等级和优先级 过程
答案 3 :(得分:1)
使用您所做的任何备份,备份至少与恢复的重要性一样多。
备份源代码的正确方法是将源文件保留在VCS(版本控制系统)中,并备份VCS存储库。从VCS存储库中排除任何自动生成的易于替换的文件(如*.pyc
文件等)。我建议使用Bazaar以获得非常高效的存储空间和用户友好性,但您的团队可能已经拥有了他们喜欢的VCS。
对于PostgreSQL数据库的备份,最好使用pg_dump
定期将数据库转储到文本文件,压缩它,然后备份结果。这是因为通过将数据库转储重新播放到另一台PostgreSQL服务器,备份在任何计算机上都可以恢复。
至于如何自动化它:你最好使用Bash程序,因为它只是将一些命令连接到文件,这是shell擅长的。