系統備份是資安與可用性的基石。本文介紹以 rsync 為核心的增量備份策略,涵蓋排除清單設計、外接硬碟掛載、MBR/GPT 備份、還原流程與 systemd 定時器自動化。
lsblk -f
# 或
df -hT
# 找出外接備份盤掛載點,如 /mnt/backup_disk (假設為 /dev/sdb1)
sudo mkdir -p /mnt/backup
sudo mount /dev/sdb1 /mnt/backup
# 寫入 /etc/fstab 實現開機自動掛載
echo '/dev/sdb1 /mnt/backup ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
sudo rsync -aAXv --delete --dry-run \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
/ /mnt/backup/ubuntu_root_$(date +%F)
| 參數 | 含義 |
|---|---|
-a | 歸檔模式 = -rlptgoD (遞歸、保留連結/權限/時間/擁有者/裝置檔) |
-A | 保留 ACL (存取控制列表) |
-X | 保留擴展屬性 (xattr) |
-v | 詳細輸出 |
--delete | 目標端刪除源端不存在的檔案 (鏡像同步) |
--dry-run | 試運行,**不實際寫入**,驗證排除清單與路徑 |
--exclude | 排除虛擬檔案系統、暫存目錄、掛載點、備份盤自身 (避免遞歸) |
確認無誤後移除
--dry-run正式執行。 首次全量備份視資料量耗時 10~60 分鐘,後續增量僅需數分鐘。
rsync 無法備份開機區,需額外備份:
# 備份 MBR (前 512 bytes) + 分區表
sudo dd if=/dev/sda of=/mnt/backup/mbr_backup_$(date +%F).img bs=512 count=1
# 備份 GPT 分區表 (sgdisk)
sudo sgdisk --backup=/mnt/backup/gpt_backup_$(date +%F).bin /dev/sda
/dev/sda2) 至 /mnt/target。/mnt/backup。sudo rsync -aAXv --delete \
/mnt/backup/ubuntu_root_2024-01-15/ /mnt/target/
sudo dd if=/mnt/backup/mbr_backup_2024-01-15.img of=/dev/sda bs=512 count=1
# 或 GPT
sudo sgdisk --load-backup=/mnt/backup/gpt_backup_2024-01-15.bin /dev/sda
sudo mount --bind /dev /mnt/target/dev
sudo mount --bind /proc /mnt/target/proc
sudo mount --bind /sys /mnt/target/sys
sudo chroot /mnt/target
grub-install /dev/sda
update-grub
exit
/usr/local/bin/backup-system.sh:#!/bin/bash
set -euo pipefail
DEST="/mnt/backup"
DATE=$(date +%F)
LOG="/var/log/backup-system.log"
exec >>"$LOG" 2>&1
echo "=== Backup started at $(date) ==="
# 確保備份盤掛載
mountpoint -q "$DEST" || { echo "Backup dest not mounted"; exit 1; }
rsync -aAX --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
/ "$DEST/ubuntu_root_$DATE"
echo "=== Backup finished at $(date) ==="
sudo chmod +x /usr/local/bin/backup-system.sh
/etc/systemd/system/backup-system.service:[Unit]
Description=System Backup to External Disk
Requires=mnt-backup.mount
After=mnt-backup.mount
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup-system.sh
User=root
/etc/systemd/system/backup-system.timer:[Unit]
Description=Daily System Backup
[Timer]
OnCalendar=daily
Persistent=true
RandomizedDelaySec=1h
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now backup-system.timer
# 查看狀態
systemctl list-timers --all | grep backup
snapper / zfs snapshot 秒級建立唯讀快照,再 rsync 快照到異地,避免一致性問題。rsync -avz --delete /mnt/backup/ user@offsite-server:/path/to/backup/ (SSH 金鑰認證)。gpg --symmetric 或 age 加密備份檔,或使用 BorgBackup (去重、壓縮、加密、掛載)。核心心法:「備份未測試還原 = 沒備份」。每季至少演練一次完整還原流程,記錄耗時與問題,才是真正的資安保障。
Ubuntu 筆記本省電三大絕招:關閉獨顯、調整亮度、啟用核心電源管理
Ubuntu 安裝 Nvidia Optimus 雙顯卡切換驅動 (nvidia-prime) 完整指南
openSUSE 升級至 13.2 完整指南:倉庫切換、zypper dup 流程、Btrfs 預設、GNOME 3.14、YaST 改進
traceroute 追蹤網路路徑:Linux/Windows 差異、TTL 原理、三次探測、參數全表、防火牆導致星號、DNS 解析延遲、跳數限制、IDC 故障回報
CentOS 伺服器初始化標準化流程:磁碟分區、格式化、掛載與 fstab 永久生效
Fedora 18 DNSenum IP 顯示亂碼修正:Perl 腳本 $rr->{address} 改為 $rr->address