使用 Zpaq 的存檔目錄

使用 Zpaq 的存檔目錄

我正在嘗試為伺服器設定備份系統,我設法改進舊系統。我正在選擇茲帕克因為它為舊系統提供了良好的壓縮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*

將包括該目錄及其所有子目錄和檔案。

相關內容