Python 自動備份:定時 copy 重要檔案,壞機都唔怕

香港唔少中小企嘅客戶資料、報價單、會計數,到今日都仲係放喺一部電腦「一個位」咁擺。部機一壞、一中勒索病毒,又或者手快快刪錯嘢,可能成間公司十幾廿年嘅心血就咁冇晒。專業備份方案動輒幾千蚊一年,但其實用 Python 十零行 code,就可以砌到一個日日自動跑嘅備份系統,唔使記住手動做,仲一蚊都唔使花。

點解一定要「自動」備份?

手動備份最大嘅敵人係「唔記得」。忙起上嚟,一個星期唔記得做一次係家常便飯;到你真係要還原嗰陣,先發現最近嗰份已經係三個月前。自動備份有三個好處:

  • 夠穩陣 —— 每日定時跑,唔靠記性
  • 夠新 —— 日日都有最新一份,最多只係損失一日嘅資料
  • 夠平 —— 用 Python 內置嘅 shutil,完全免費

準備:裝好 Python 同 schedule

如果你未裝 Python,先去 python.org 下載最新版本,安裝時記得剔 Add Python to PATH。裝好之後,開「命令提示字元」打下面呢句,裝埋排程要用嘅 schedule 套件:

pip install schedule

完整程式碼

開一個新檔案 backup.py(記事本就得),貼入以下 code:

import shutil
import schedule
import time
import os
from datetime import datetime

SRC = r"C:\Users\you\Documents\重要資料"   # 要備份嘅資料夾
DST_ROOT = r"D:\Backup"                     # 備份去邊(第二隻硬碟 / NAS)

def backup():
    today = datetime.now().strftime("%Y-%m-%d")
    dst = os.path.join(DST_ROOT, "backup_" + today)
    if os.path.exists(dst):
        print(today + " 已經備份咗,跳過")
        return
    shutil.copytree(SRC, dst)
    print("備份完成 -> " + dst)

schedule.every().day.at("18:00").do(backup)

print("備份程式已啟動,每日 18:00 自動跑")
while True:
    schedule.run_pending()
    time.sleep(60)

逐行解釋

  • import shutil —— Python 內置嘅檔案操作工具,負責成個資料夾 copy。
  • SRCDST_ROOT —— 你自己改嘅兩個路徑:要備份嘅嘢,同備份去邊。記得 DST_ROOT 要揀另一隻硬碟,唔好同原檔放埋一齊。
  • backup() —— 核心函式。先用今日日期砌出目標資料夾名(例如 backup_2026-09-01),再檢查有冇做過;未做過先用 shutil.copytree 成個 folder 連 subfolder 一齊 copy。
  • schedule.every().day.at("18:00") —— 設定每日下午六點自動執行 backup()
  • while True —— 令程式長駐,每 60 秒醒一次檢查有冇嘢要做。呢個 loop 唔食資源,放心長開。

進階:只備份改過嘅檔案

如果資料夾好大,日日全份 copy 好嘥位。想慳位,可以用 shutil.copy2os.walk 逐個檔案比對修改時間,淨係抄新改過嘅:

import os
import shutil

SRC = r"C:\Users\you\Documents\重要資料"
DST = r"D:\Backup\incremental"

for root, dirs, files in os.walk(SRC):
    rel = os.path.relpath(root, SRC)
    target_dir = os.path.join(DST, rel)
    os.makedirs(target_dir, exist_ok=True)
    for f in files:
        src_f = os.path.join(root, f)
        dst_f = os.path.join(target_dir, f)
        if (not os.path.exists(dst_f)) or (os.path.getmtime(src_f) > os.path.getmtime(dst_f)):
            shutil.copy2(src_f, dst_f)

呢個版本會跳過無改動嘅檔案,只抄新嘢,日日跑都唔會越嚟越慢。

點樣令佢真係「日日自動跑」?

最簡單係上面個 while True 版本,直接放喺公司部長開嘅電腦行就得。如果你想用系統排程,Windows 可以咁做:

  1. Win 搜尋「工作排程器」(Task Scheduler)
  2. 「建立基本工作」→ 觸發條件揀「每日」,時間設 18:00
  3. 操作揀「啟動程式」,程式填 python,引數填 C:\路徑\backup.py

Mac / Linux 用家可以用 cron 一行搞掂。

三個安全貼士

  • 分開存放 —— 備份一定要落另一隻硬碟或 NAS,最好再複製一份上雲端,做到「3-2-1」備份原則。
  • 定期試還原 —— 唔好等到出事嗰日先知份備份壞咗,每季抽一次試 restore。
  • 加密敏感資料 —— 客戶私隱、會計數呢類敏感檔案,備份前最好先加密。

總結

自動備份唔係大公司專利。用 Python 十零行 code,你就可以有一個日日定時、自動命名、仲識跳過重複嘅備份系統,成本係零,效果同幾千蚊一年嘅方案一樣咁穩陣。由今日開始,唔好再靠記性去保護你嘅生意資料。