Fedora 伺服器備份與還原機制
伺服器備份與還原是確保系統可靠性與資料安全的重要環節。常見的備份方式包括完整備份(Full Backup)、差異備份(Differential Backup)、增量備份(Incremental Backup)。本篇將介紹如何使用 tar
、rsync
、Bacula
等工具進行 Linux 伺服器的備份與還原。
目錄
- 備份概述
- 完整備份 (Full Backup)
- 差異備份 (Differential Backup)
- 增量備份 (Incremental Backup)
- 使用 rsync 進行高效能備份
- 使用 Bacula 進行自動備份
- 資料庫備份
- 備份還原測試
- 結語
備份概述
為何需要備份?
- 防止資料遺失(硬碟故障、人為錯誤、惡意攻擊)
- 便於災難恢復
- 允許快速回滾至穩定狀態
備份類型
- 完整備份 (Full Backup):備份所有資料,每次執行佔用較多空間。
- 差異備份 (Differential Backup):備份上次完整備份後改變的文件。
- 增量備份 (Incremental Backup):僅備份上次任何備份(完整或增量)後變更的文件。
完整備份 (Full Backup)
完整備份會備份所有指定的資料,適合重要資料的週期性備份。
使用 tar
進行完整備份
tar -cvpzf /backup/full_backup_$(date +%F).tar.gz --exclude=/backup --one-file-system /
使用 rsync
進行完整備份
rsync -av --delete / /backup/full_backup/
差異備份 (Differential Backup)
差異備份僅儲存從 上次完整備份 後改變的檔案。
tar -cvpzf /backup/differential_backup_$(date +%F).tar.gz --newer-mtime="$(date -d '7 days ago' +%F)" /
或使用 rsync
:
rsync -av --compare-dest=/backup/full_backup/ / /backup/differential_backup/
增量備份 (Incremental Backup)
增量備份只備份從上次任何類型的備份(完整或增量)以來變更的檔案。
tar -cvpzf /backup/incremental_backup_$(date +%F_%H%M%S).tar.gz --listed-incremental=/backup/incremental.snar /
或使用 rsync
:
rsync -av --backup --backup-dir=/backup/incremental_$(date +%F) / /backup/full_backup/
使用 rsync 進行高效能備份
使用 rsync
進行遠端備份
rsync -avz --progress /data/ user@remote-server:/backup/
使用 rsync
進行本地鏡像備份
rsync -av --delete /data/ /backup/mirror/
設定 crontab
自動備份
crontab -e
加入:
0 2 * * * rsync -av --delete /data/ /backup/mirror/
此排程會每日凌晨 2 點執行備份。
使用 Bacula 進行自動備份
Bacula 是一款專業的企業級備份解決方案,可自動執行完整、差異和增量備份。
安裝 Bacula
sudo dnf install bacula-server bacula-client -y
設定 Bacula 伺服器
- 編輯
/etc/bacula/bacula-dir.conf
設定備份來源與存儲位置。 - 設定
/etc/bacula/bacula-sd.conf
來管理備份存儲設備。 - 啟動 Bacula 服務:
sudo systemctl enable --now bacula-dir bacula-sd bacula-fd
- 建立備份作業並執行:
bconsole
run job=backup-job-name
資料庫備份
MySQL / MariaDB 備份
mysqldump -u root -p --all-databases > /backup/mysql_backup_$(date +%F).sql
還原 MySQL / MariaDB
mysql -u root -p < /backup/mysql_backup.sql
PostgreSQL 備份
pg_dumpall -U postgres > /backup/postgresql_backup.sql
還原 PostgreSQL
psql -U postgres -f /backup/postgresql_backup.sql
備份還原測試
測試完整備份還原:
tar -xvpzf /backup/full_backup_*.tar.gz -C /restore_location
測試增量還原:
tar --listed-incremental=/backup/incremental.snar -xvpzf /backup/incremental_backup_*.tar.gz -C /restore_location
測試 rsync
備份還原:
rsync -av /backup/mirror/ /data/
結語
本篇介紹了 Linux 伺服器的備份與還原方法,涵蓋完整備份、差異備份、增量備份、遠端備份與自動化備份策略。透過這些技巧,您可以確保伺服器的資料安全與可恢復性,並根據需求選擇最佳的備份方案。