とてもデリケートな感じがしますが、
zip / tarファイルにバックアップしたいプロジェクトのさまざまなフォルダーがありますが、pycファイルや一時ファイルなどのファイルのバックアップは避けたいと思います。
バックアップする必要のあるPostgresデータベースもあります。
この操作をPythonスクリプトとして実行するためのヒントはありますか?
また、プロセスがプロセス内のリソースを占有するのを防ぐ方法はありますか?
助けていただければ幸いです。
とてもデリケートな感じがしますが、
zip / tarファイルにバックアップしたいプロジェクトのさまざまなフォルダーがありますが、pycファイルや一時ファイルなどのファイルのバックアップは避けたいと思います。
バックアップする必要のあるPostgresデータベースもあります。
この操作をPythonスクリプトとして実行するためのヒントはありますか?
また、プロセスがプロセス内のリソースを占有するのを防ぐ方法はありますか?
助けていただければ幸いです。
Linux(またはMacOSXなどの他の形式のUnix)を使用している場合、プロセスの優先度を下げる簡単な方法(したがって、間接的に、他のプロセスが必要とする場合のCPUの消費)は優れたコマンドです。Python(同じOS)では、os.niceを使用すると、プログラムを「より良くする」ことができます(優先度を下げる&c)。
PostgreSQL DBのバックアップには、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
呼び出しに3番目の引数を追加して)で終わるファイルを除く、上記のサブツリー内のすべてのファイルが圧縮されます。これ以上簡単なことはありません。
Linuxでは、--exclude
オプションでtarを使用できます。例、.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リポジトリをバックアップすることです。*.pyc
自動生成された簡単に置き換えられるファイル(これらのファイルなど)をVCSリポジトリから除外します。非常に効率的なストレージと使いやすさのためにBazaarをお勧めしますが、チームはすでに好みのVCSを持っている可能性があります。
PostgreSQLデータベースのバックアップには、データベースpg_dump
を定期的にテキストファイルにダンプし、それを圧縮して、結果をバックアップするために使用するのが最適です。これは、データベースダンプを別のPostgreSQLサーバーで再生することにより、バックアップが任意のマシンで復元可能になるためです。
自動化の方法については、Bashプログラムを目的に使用するのが最適です。これは、いくつかのコマンドをファイルに接続するだけで、シェルが優れているためです。