我正在嘗試為伺服器設定備份系統,我設法改進舊系統。我正在選擇茲帕克因為它為舊系統提供了良好的壓縮lrzip -z
,因為連結頁面聲稱提供增量壓縮,其中僅在每個新備份實例中備份更改的資料。
我目前正在使用以下腳本進行備份(所有資料都儲存在該server
目錄中):
cd server
zpaq pa ../backup.zpaq *
該腳本產生一個存檔,其中包括直接位於伺服器目錄下的所有文件,但不會遞歸掃描整個目錄系統。如何讓它掃描整個目錄系統?當我刪除該a
選項或server
從其父目錄備份目錄時,問題仍然發生。
這手冊頁這似乎是由該工具的作者寫的:
如果名稱是目錄,則它遞歸地包含其中的所有檔案和子目錄。
烏班圖的手冊頁沒有提到遞歸。我已經使用 Ubuntu 的儲存庫安裝了該工具apt-get install zpaq
。如果 Ubuntu 的 zpaq 與我在本問題開頭連結的 zpaq 有所不同,請解釋在哪裡可以找到連結的 zpaq 的 Ubuntu 軟體包。
答案1
看起來您想要一個能夠zpaq
按照您期望的方式工作的解決方案。但是,如果您正在使用bash
,此解決方法應該可以為您帶來所需的結果。類型shopt -s globstar
。然後,執行您一直在使用的命令,並進行一點小小的更改:
zpaq pa ../backup.zpaq **
在globstar
模式生效的情況下,
**
擴展到目前目錄中的條目列表樹;即目前目錄及以下目錄。就像*
,它會忽略.
(隱藏)文件。如果您想將它們包括在內,shopt -s dotglob
也可以這樣做。 (您可以將這些組合成一個命令:shopt -s globstar dotglob
。)
在腳本中執行此操作最方便。但是,如果您在主(互動式)shell 中執行此操作,您可能需要撤銷設定shopt
。您可以使用 來執行此操作shopt -u globstar dotglob
。
注意:如果檔案太多,這可能會失敗,因為命令列的長度有限制 - 但它非常大。
答案2
我在 Ubuntu 14.04.3 上遇到了同樣的問題。解決方案是不使用儲存庫中的套件,而是安裝來自的最新來源http://mattmahoney.net/dc/zpaq.html
下載該套件後,它是 .zip 格式,需要使用 unzip 解壓縮。從那裡開始:
make
sudo make install
現在在做
zpaq a *archive* */dir*
將包括該目錄及其所有子目錄和檔案。