檔案壓縮之自動執行

2024/03/04閱讀時間約 6 分鐘

1. 問題:

            (1)檔案每天新增或經常會產生多個新檔案時 ,會造成檔案數過多之雜亂現象

            (2) 當檔案多或容量大時,沒有作壓縮歸檔處理,將發生浪費硬碟空間,儲存空間不足現象,影響系統效能

            (3) 舊資料檔案沒有規劃好保存處理規則,將不易取回再利用

            (4) 若檔案之壓縮作業,由人工手動處理時,將耗時且效率差

 

 2. 改善:

            (1) 欲作歸檔保存處理之多個檔案,將其檔案名稱等明細出力至txt  file

            (2)依上述txt檔案, 抓取這些檔案,進行壓縮處理,壓縮後產出一個壓縮檔案,如此便可作歸檔管理,並可節省硬碟使用空間

            (3) 上述產出之壓縮檔,規劃作好保存管理,以便將來可容易取回利用,查看舊檔案資料

            (4) 設計自動執行排程,以便將壓縮作業自動化,提升業務工作效率

 

 3.方法:

          3.1 依照使用者設定條件,自動選取欲作壓縮處理之對象檔案明細,取得後將這些欲作壓縮之檔案明細存入txt檔內  

  

  3.2 讀取上述明細txt檔,自動壓縮這些對象檔案,壓縮後,依照使用者之命名規則新出力作成一個新的壓縮檔,並保存於指定目錄。壓縮作業處理完成後,其結果會產生一個log檔,可供參考。

 

  3.3 為實現自動執行,可新設計一個Windows工作排程,自動執行後,將結果自動寄出email 給擔當人員

 

4. 舉例說明:

          4.0 考慮檔案名稱含有中文之編碼方式,需使用  UTF-8

      Windows cmd 設計:

CHCP 65001

 

   4.1 要被壓縮之檔案儲存在哪裡?  

    (1)欲壓縮處理之對象檔案,其路徑目錄如下:

          E:\202205_N0094-Backup\2021_IT\DB_alert\incdir_112889

   如下圖1說明

raw-image

4.2  將上述目錄下之檔案名稱明細內容出力至txt檔內 

         (1) 出力之檔案明細txt檔,其路徑檔名如下:

              D:\TEST\7z_source_file-list.txt,本例有四個檔案將被壓縮

          

        (2)  如何選取將被壓縮之檔案明細,並新出力一個txt檔?

              cmd 設計如下:

   forfiles /P E:\202205_N0094-Backup\2021_IT\DB_alert\incdir_112889   /M *.* /c "cmd /c echo @path>>D:\TEST\7z_source_file-list.txt"

 

        (3)  上述cmd行後,自動新出力一個txt檔,如下圖2 所示

raw-image

4.3  壓縮作業處裡

(1)利用免費壓縮軟體7z  來處裡壓縮

(2)欲壓縮之來源檔案,由上述4.2  txt檔內取得

(3)來源檔案壓縮處理後,新產生一個壓縮7z檔,儲存至指定目錄內,並出力一個處理結果之log file

*新產生之壓縮檔,本例之檔名路徑:

D:\TEST_BK\compress_%date:~-10,4%%date:~-5,2%%date:~-2,2%.7z  

本例壓縮檔檔名是依照日期自動取得檔名

*log file檔名路徑: D:\TEST\7z_log.txt

 

(4) 如何處理壓縮作業?

      cmd 設計:


D:\LIN_Program_Files\7ZipPortable\App\7-Zip64\7z a -mx=3 D:\TEST_BK\compress_%date:~-10,4%%date:~-5,2%%date:~-2,2%.7z @D:\TEST\7z_source_file-list.txt > D:\TEST\7z_log.txt

               

 (5) 上述cmd執行後,新出力之壓縮檔為compress_20231207.7z,將其展開後內含四個檔案,如下圖3 所示

raw-image

(6)本例四個檔案壓縮前 86.9MB,壓縮後  6.8MB,節省80MB

 

4.4  壓縮處裡後,最後將4.2之明細txt 內容清除

* cmd 設計:

     echo. >D:\HTW-IT\DB-7z\7z_source_file-list.txt

 

  4.5  cmd處理時,出現如下錯誤訊息之對應

Command Line Error:

Incorrect item in listfile.

Check charset encoding and -scs switch.

==>修改方法:

(1)   Windows cmd  輸入 CHCP 65001

(2)檔案明細file   7z_source_file-list.txt儲存時,編碼方式需 設為 UTF-8

 

5. 將來構想:

       (1) 各系統舊資料檔案,如每日產出之資料備份檔,資料庫alert file,Windows system log 等等,這些檔案須要定期壓縮歸檔,移至別處儲存,或刪除,不然占用太多硬碟空間,將影響系統效能

      (2) 當應用系統需要取回舊資料,作調查或測試之場合時,可以容易取得舊檔案

       (3) 舊資料保留管理,可達成各系統之服務要求,並可提供稽查備詢

       (4) 資料壓縮後,可以節省硬碟使用空間

       (5) 可排定自動執行壓縮作業,不須人工作業,提升業務效率

----------------recorded by linct------------------




6會員
42內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
留言0
查看全部
發表第一個留言支持創作者!