簡體   English   中英

備份文件夾+數據庫 - Python

[英]Backup of folder + database - Python

我覺得這很精致,

我有各種文件夾,我希望將其備份到zip / tar文件中,但是希望避免備份pyc文件和臨時文件等文件。

我還有一個需要備份的Postgres數據庫。


有關將此操作作為python腳本運行的提示嗎?

另外,無論如何都會阻止流程占用流程中的資源?


非常感謝幫助。

如果您使用的是Linux(或任何其他形式的Unix,例如MacOSX),那么降低進程優先級的一種簡單方法 - 因此間接地,如果其他進程需要一些內存,則會消耗CPU - 這是一個很好的命令。 在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上,您可以使用帶有--exclude選項的tar。 例如,要排除.pyc文件和臨時文件(在本例中為.tmp

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

使用z選項將其壓縮。

有了今天的多核cpu,你可能會發現cpu不是瓶頸。 現在更有可能需要更好地共享磁盤I / O.

Linux有ionice命令允許你控制它

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擅長的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM