最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux系統(tǒng)備份與恢復(fù)之rsync與tar的完整使用教程

 更新時(shí)間:2025年10月29日 09:26:28   作者:我不是呆頭  
在 Linux 系統(tǒng)管理領(lǐng)域,數(shù)據(jù)安全與災(zāi)難恢復(fù)是永恒的核心議題,一套可靠的備份與恢復(fù)策略是衡量系統(tǒng)穩(wěn)定性的關(guān)鍵指標(biāo),本文將深入剖析 Linux 環(huán)境下兩大最核心、最經(jīng)典的備份工具:rsync 與 tar,需要的朋友可以參考下

摘要

在 Linux 系統(tǒng)管理領(lǐng)域,數(shù)據(jù)安全與災(zāi)難恢復(fù)是永恒的核心議題。一套可靠的備份與恢復(fù)策略是衡量系統(tǒng)穩(wěn)定性的關(guān)鍵指標(biāo)。本文將深入剖析 Linux 環(huán)境下兩大最核心、最經(jīng)典的備份工具:rsynctar。我們將從工具的核心設(shè)計(jì)哲學(xué)出發(fā),詳細(xì)講解 tar 如何用于創(chuàng)建完整的、可移植的系統(tǒng)歸檔快照,以及 rsync 如何憑借其卓越的增量同步算法實(shí)現(xiàn)高效的日常數(shù)據(jù)備份與遠(yuǎn)程鏡像。本文不僅包含基礎(chǔ)命令,更會(huì)深入到權(quán)限處理、性能優(yōu)化、增量備份策略等高級(jí)應(yīng)用場(chǎng)景,最終提供一套完整的、可實(shí)戰(zhàn)的系統(tǒng)備份與恢復(fù)流程,助您構(gòu)建堅(jiān)不可摧的數(shù)據(jù)防線。

 1 引言:為何備份至關(guān)重要?

無論是硬件故障、軟件錯(cuò)誤,還是人為誤操作,數(shù)據(jù)丟失的風(fēng)險(xiǎn)無處不在。對(duì)于 Linux 系統(tǒng)管理員而言,定期、可靠的備份不僅是“好習(xí)慣”,更是核心職責(zé)。一套優(yōu)秀的備份策略應(yīng)能讓系統(tǒng)在遭遇災(zāi)難性故障后,以可接受的時(shí)間和成本恢復(fù)到正常運(yùn)行狀態(tài)。

1.1. 備份策略的核心思想

一個(gè)完整的備份策略通??紤]以下幾點(diǎn):

  • 備份范圍: 是備份整個(gè)系統(tǒng),還是僅備份關(guān)鍵數(shù)據(jù)(如 /home/etc/var)?
  • 備份頻率: 多久進(jìn)行一次備份?(每日、每周、每月)
  • 備份類型: 是全量備份、增量備份還是差異備份?
  • 存儲(chǔ)位置: 備份數(shù)據(jù)存放在何處?(本地磁盤、遠(yuǎn)程服務(wù)器、云存儲(chǔ))

1.2. 工具選擇:tar 與 rsync 的定位差異

在眾多 Linux 備份工具中,tarrsync 因其功能強(qiáng)大、普遍預(yù)裝而成為事實(shí)上的標(biāo)準(zhǔn)。但它們的設(shè)計(jì)哲學(xué)和適用場(chǎng)景截然不同。

特性tar (Tape Archive)rsync (Remote Sync)
核心功能將多個(gè)文件/目錄打包成一個(gè)單一的歸檔文件高效地同步兩個(gè)目錄(本地或遠(yuǎn)程)
輸出形態(tài)單一文件(如 backup.tar.gz一個(gè)與源完全一致的目標(biāo)目錄
備份類型主要用于全量備份天然適合增量備份鏡像
傳輸效率傳輸整個(gè)歸檔文件,效率較低僅傳輸文件差異部分,網(wǎng)絡(luò)效率極高
恢復(fù)方式需要先解壓整個(gè)歸檔數(shù)據(jù)直接可用,無需額外步驟

簡(jiǎn)單來說,tar 用于“制作快照”rsync 用于“保持同步”。

2 tar:歸檔的藝術(shù)與全量備份

tar 命令是制作系統(tǒng)級(jí)備份快照的絕佳工具,它能將整個(gè)文件系統(tǒng)的結(jié)構(gòu)和元數(shù)據(jù)(權(quán)限、所有者、時(shí)間戳)完整地封裝到一個(gè)文件中。

2.1. tar 的基本操作:打包與解包

tar 的核心選項(xiàng)非常直觀:

  • -c (create): 創(chuàng)建一個(gè)新的歸檔。
  • -x (extract): 從歸檔中提取文件。
  • -v (verbose): 顯示詳細(xì)的處理過程。
  • -f (file): 指定歸檔文件的名稱。
# 創(chuàng)建一個(gè)歸檔,將 /etc 和 /home 目錄打包
tar -cvf my_backup.tar /etc /home

# 查看歸檔文件內(nèi)容,不解壓 (-t, list)
tar -tvf my_backup.tar

# 從歸檔中提取文件到當(dāng)前目錄
tar -xvf my_backup.tar

# 提取到指定目錄 (-C, change directory)
mkdir /tmp/restore
tar -xvf my_backup.tar -C /tmp/restore

2.2. 關(guān)鍵選項(xiàng)詳解:壓縮、排除與權(quán)限保持

為了實(shí)用性,我們通常會(huì)結(jié)合壓縮和排除功能。

壓縮選項(xiàng):

  • -z: 使用 gzip 進(jìn)行壓縮,擴(kuò)展名為 .tar.gz 或 .tgz,速度與壓縮率均衡。
  • -j: 使用 bzip2 進(jìn)行壓縮,擴(kuò)展名為 .tar.bz2,壓縮率更高但更慢。
  • -J: 使用 xz 進(jìn)行壓縮,擴(kuò)展名為 .tar.xz,壓縮率最高,也最耗時(shí)。

--exclude=PATTERN: 在打包時(shí)排除匹配模式的文件或目錄。

-p (--preserve-permissions): 這是系統(tǒng)備份時(shí)必須使用的選項(xiàng),它會(huì)保留文件的所有元數(shù)據(jù),包括權(quán)限、所有權(quán)和時(shí)間戳。

2.3. 實(shí)戰(zhàn)案例:制作一份完整的系統(tǒng)根分區(qū)快照

在對(duì)根目錄 / 進(jìn)行備份時(shí),必須排除一些動(dòng)態(tài)生成的虛擬文件系統(tǒng),否則備份將失敗或產(chǎn)生一個(gè)無用且巨大的文件。

#!/bin/bash

# 備份目標(biāo)目錄
BACKUP_DIR="/mnt/external_drive/backups"
# 備份文件名,包含日期
FILENAME="system_root_backup_$(date +%Y-%m-%d).tar.gz"
# 備份的源目錄
SOURCE_DIR="/"
# 需要排除的目錄列表
EXCLUDE_LIST=(
    "--exclude=${BACKUP_DIR}/*"
    "--exclude=/proc/*"
    "--exclude=/sys/*"
    "--exclude=/dev/*"
    "--exclude=/tmp/*"
    "--exclude=/run/*"
    "--exclude=/mnt/*"
    "--exclude=/media/*"
    "--exclude=/lost+found"
)

echo "Starting system backup..."
# 使用 -p 保留權(quán)限,-C 切換到源目錄以打包相對(duì)路徑
# 注意:直接打包 / 會(huì)保存絕對(duì)路徑,恢復(fù)時(shí)更直接
tar -czvpf "${BACKUP_DIR}/${FILENAME}" "${EXCLUDE_LIST[@]}" "${SOURCE_DIR}"

if [ $? -eq 0 ]; then
    echo "Backup successful: ${BACKUP_DIR}/${FILENAME}"
else
    echo "Backup failed!"
fi

關(guān)鍵點(diǎn):

  • 備份文件自身所在的目錄必須被排除,否則會(huì)產(chǎn)生無限循環(huán)。
  • /proc/sys/dev 等是內(nèi)核映射的虛擬文件系統(tǒng),不能也不需要備份。

3 rsync:高效同步與增量備份的王者

rsync 的強(qiáng)大之處在于它能以最小的數(shù)據(jù)傳輸量完成目錄同步,使其成為日常增量備份和遠(yuǎn)程鏡像的首選。

3.1. rsync 的核心魅力:差分算法

當(dāng) rsync 同步一個(gè)文件時(shí),它不會(huì)盲目地整個(gè)復(fù)制。它會(huì):

  • 將源文件和目標(biāo)文件分割成固定大小的數(shù)據(jù)塊。
  • 計(jì)算每個(gè)塊的校驗(yàn)和。
  • 比較源和目標(biāo)的校驗(yàn)和列表。
  • 只通過網(wǎng)絡(luò)傳輸那些在目標(biāo)端不存在或校驗(yàn)和不同的數(shù)據(jù)塊,以及如何將這些塊重新組裝成新文件的指令。

這個(gè)過程使得即使一個(gè)巨大的日志文件只在末尾增加了幾行,rsync 也只需傳輸這幾行的數(shù)據(jù),而不是整個(gè)文件。

3.2. 基本同步操作:本地與遠(yuǎn)程

rsync 最常用的選項(xiàng)是 -a (--archive),它是一個(gè)選項(xiàng)集合,等同于 -rlptgoD,意為:

  • -r: 遞歸同步目錄。
  • -l: 保留符號(hào)鏈接。
  • -p: 保留權(quán)限。
  • -t: 保留修改時(shí)間。
  • -g: 保留用戶組。
  • -o: 保留所有者。
  • -D: 保留設(shè)備文件和特殊文件。
# 本地同步,-v 表示 verbose, -h 表示 human-readable
rsync -avh /path/to/source/ /path/to/destination/

# **重要提示:** 源目錄末尾的斜杠 `/`
# /source/ : 表示同步 source 目錄下的 *內(nèi)容* 到 destination。
# /source  : 表示將 source 目錄 *本身* 放入 destination,結(jié)果是 /destination/source/。

# 遠(yuǎn)程同步到服務(wù)器 (推)
# -z 選項(xiàng)啟用傳輸過程中的壓縮
rsync -avhz /local/data/ user@remote_server:/remote/backup/

# 從遠(yuǎn)程服務(wù)器同步到本地 (拉)
rsync -avhz user@remote_server:/remote/data/ /local/backup/

3.3. 高級(jí)技巧:刪除、排除與版本化增量備份

--delete: 使目標(biāo)目錄嚴(yán)格與源目錄同步。如果一個(gè)文件在源目錄被刪除,那么在同步時(shí)它也會(huì)在目標(biāo)目錄被刪除。請(qǐng)謹(jǐn)慎使用此選項(xiàng)!

--exclude-from=FILE: 從一個(gè)文件中讀取排除規(guī)則列表,比多個(gè) --exclude 更整潔。

--link-dest=DIR: 這是實(shí)現(xiàn)空間高效的版本化備份的神器。它會(huì)創(chuàng)建一個(gè)新的備份,但對(duì)于與上一個(gè)版本 (DIR) 相同的文件,它不會(huì)復(fù)制,而是創(chuàng)建一個(gè)硬鏈接。這意味著只有新增和修改的文件會(huì)占用新的磁盤空間。

# 實(shí)現(xiàn)每日增量備份的腳本片段
BASE_DIR="/snapshots"
TODAY=$(date +%Y-%m-%d)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

SOURCE="/data/important_stuff/"
DEST="${BASE_DIR}/${TODAY}"
LINK_DEST="${BASE_DIR}/${YESTERDAY}"

# 確保今天的備份目錄存在
mkdir -p "${DEST}"

# 執(zhí)行 rsync
rsync -avh --delete \
      --link-dest="${LINK_DEST}" \
      "${SOURCE}" \
      "${DEST}/"

這個(gè)簡(jiǎn)單的腳本每天會(huì)創(chuàng)建一個(gè)新的備份目錄,但占用的空間遠(yuǎn)小于全量備份。

4 終極實(shí)戰(zhàn):完整的系統(tǒng)備份與恢復(fù)流程

4.1. 備份階段:選擇合適的工具與策略

  • 策略A (定期全量快照): 使用 2.3節(jié) 的 tar 腳本,每周或每月執(zhí)行一次,將系統(tǒng)快照存放在安全的異地。
  • 策略B (每日增量同步): 使用 3.3節(jié) 的 rsync 結(jié)合 --link-dest 的腳本,每日將關(guān)鍵數(shù)據(jù)目錄(如 /etc/home/var/www)同步到備份服務(wù)器。

4.2. 恢復(fù)階段:從零到一重建系統(tǒng)

假設(shè)主硬盤損壞,我們需要在一塊新硬盤上恢復(fù)系統(tǒng)。

4.2.1. 準(zhǔn)備恢復(fù)環(huán)境

  1. 使用 Linux Live CD/USB (如 Ubuntu, SystemRescueCd) 啟動(dòng)計(jì)算機(jī)。
  2. 使用 gparted 或 fdisk 等工具對(duì)新硬盤進(jìn)行分區(qū),至少需要一個(gè)根分區(qū) (/) 和一個(gè) swap 分區(qū)。如果使用 UEFI 啟動(dòng),還需要一個(gè) EFI 分區(qū)。
  3. 格式化新分區(qū),例如:mkfs.ext4 /dev/sda1。
  4. 掛載新分區(qū):mount /dev/sda1 /mnt

4.2.2. 數(shù)據(jù)恢復(fù)

  • 如果使用 tar 備份:
# 將備份文件恢復(fù)到新分區(qū)的掛載點(diǎn)
tar -xzvpf /path/to/system_root_backup.tar.gz -C /mnt

如果使用 rsync 備份:

# 將 rsync 備份目錄同步到新分區(qū)
rsync -avh /path/to/rsync_backup/ /mnt/

4.2.3. 修復(fù)引導(dǎo)與系統(tǒng)配置 (chroot)

數(shù)據(jù)恢復(fù)后,系統(tǒng)還不能啟動(dòng),因?yàn)橐龑?dǎo)加載程序 (GRUB) 尚未安裝到新硬盤的 MBR/EFI 中,且 /etc/fstab 可能指向舊的磁盤 UUID。

掛載必要的虛擬文件系統(tǒng):

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

chroot 進(jìn)入新系統(tǒng)環(huán)境: chroot 命令可以將當(dāng)前終端的根目錄切換到 /mnt,讓你如同在新恢復(fù)的系統(tǒng)中操作。

sudo chroot /mnt

修復(fù) GRUB:

# 查找新磁盤的設(shè)備名 (例如 /dev/sda)
# 對(duì)于 BIOS 系統(tǒng):
grub-install /dev/sda
# 對(duì)于 UEFI 系統(tǒng),確保 EFI 分區(qū)已掛載到 /boot/efi
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

# 更新 GRUB 配置
update-grub

檢查 /etc/fstab 使用 blkid 命令查看新分區(qū)的 UUID,并更新 /etc/fstab 文件,確保 UUID 匹配。

退出并重啟:

exit        # 退出 chroot
# unmount all virtual filesystems if needed
reboot

5 性能與安全考量

5.1. 處理特殊權(quán)限:ACLs 與 SELinux

標(biāo)準(zhǔn)的 -a 選項(xiàng)不保留 ACL (Access Control Lists) 和 SELinux 上下文。在需要保留這些屬性的系統(tǒng)(如 RHEL/CentOS)上,應(yīng)添加 -A-X 選項(xiàng)。

rsync -avhAX ...
# -A, --acls: 保留 ACL
# -X, --xattrs: 保留擴(kuò)展屬性,包括 SELinux 上下文

tar 在較新版本中也支持 --acls--selinux 選項(xiàng)。

5.2. 優(yōu)化傳輸性能:壓縮與帶寬限制

  • 壓縮 (-z): 在慢速網(wǎng)絡(luò)中,-z 可以顯著提升速度。但在高速局域網(wǎng)(如千兆網(wǎng))中,CPU 壓縮的開銷可能大于網(wǎng)絡(luò)傳輸?shù)暮臅r(shí),此時(shí)不加 -z 可能更快。
  • 帶寬限制 (--bwlimit): 在生產(chǎn)環(huán)境中進(jìn)行備份時(shí),為了不影響線上業(yè)務(wù),可以用此選項(xiàng)限制 rsync 的帶寬占用。
# 限制 rsync 帶寬為 5000 KB/s (約 5MB/s)
rsync -avhz --bwlimit=5000 ...

6. 總結(jié):構(gòu)建你的備份矩陣

tarrsync 并非競(jìng)爭(zhēng)關(guān)系,而是互補(bǔ)的。一個(gè)成熟的備份策略應(yīng)當(dāng)是一個(gè)矩陣:

  • 使用 tar 進(jìn)行低頻(每周/每月)的、完整的、可用于裸機(jī)恢復(fù)的系統(tǒng)級(jí)快照。
  • 使用 rsync 進(jìn)行高頻(每日/每小時(shí))的、高效的、用于快速恢復(fù)單個(gè)文件或目錄的數(shù)據(jù)級(jí)增量同步。

通過結(jié)合這兩種工具,并將其集成到自動(dòng)化的 cron 任務(wù)中,你可以為你的 Linux 系統(tǒng)構(gòu)建一個(gè)縱深防御、高枕無憂的備份與恢復(fù)體系。

以上就是Linux系統(tǒng)備份與恢復(fù)之rsync與tar的完整使用教程的詳細(xì)內(nèi)容,更多關(guān)于Linux rsync與tar使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • centos7安裝mysql并jdbc測(cè)試實(shí)例詳解

    centos7安裝mysql并jdbc測(cè)試實(shí)例詳解

    這篇文章主要介紹了centos7安裝mysql并jdbc測(cè)試實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 國(guó)產(chǎn)操作類linux系統(tǒng)vnc服務(wù)方式

    國(guó)產(chǎn)操作類linux系統(tǒng)vnc服務(wù)方式

    該文章介紹了如何在銀河麒麟v10系統(tǒng)上配置和使用VNC(Virtual Network Console)虛擬網(wǎng)絡(luò)控制臺(tái)協(xié)議進(jìn)行遠(yuǎn)程圖形化控制,包括查看可用軟件組、安裝VNC服務(wù)、配置VNC服務(wù)、啟動(dòng)和停止VNC服務(wù)、VNC服務(wù)參數(shù)說明以及VNC服務(wù)其他說明
    2026-01-01
  • 在Ubuntu中設(shè)置IP地址的幾種方式

    在Ubuntu中設(shè)置IP地址的幾種方式

    在 Ubuntu 中,可以通過幾種方式設(shè)置 IP 地址:使用網(wǎng)絡(luò)管理器圖形界面、命令行工具、或直接編輯網(wǎng)絡(luò)配置文件,以下是這幾種方法的詳細(xì)實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2025-05-05
  • Linux部署RocketMQ的實(shí)操流程

    Linux部署RocketMQ的實(shí)操流程

    在 Linux 服務(wù)器上搭好了 RocketMQ,內(nèi)網(wǎng)測(cè)試一切正常,可外網(wǎng)想連的時(shí)候卻被網(wǎng)絡(luò)隔離卡得死死的,本文給大家介紹一套極簡(jiǎn)的部署 + 外網(wǎng)訪問方案,不用復(fù)雜配置,幾分鐘就能讓你的 RocketMQ 從內(nèi)網(wǎng)走向公網(wǎng),需要的朋友可以參考下
    2026-03-03
  • 阿里云ECS云服務(wù)器如何開放8080端口

    阿里云ECS云服務(wù)器如何開放8080端口

    這篇文章主要介紹了阿里云ECS云服務(wù)器如何開放8080端口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • CentOS7安裝配置 Redis的方法步驟

    CentOS7安裝配置 Redis的方法步驟

    這篇文章主要介紹了CentOS7安裝配置 Redis的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法

    CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法

    這篇文章主要介紹了CentOS6.5環(huán)境下使用rsync增量同步備份文件的方法,結(jié)合實(shí)例形式分析了rsync進(jìn)行文件同步備份操作的相關(guān)命令與使用技巧,需要的朋友可以參考下
    2018-04-04
  • 在Apache服務(wù)器中運(yùn)行CGI程序的方法

    在Apache服務(wù)器中運(yùn)行CGI程序的方法

    這篇文章主要介紹了在Apache服務(wù)器中運(yùn)行CGI程序的方法,文中以Perl腳本作為示例,需要的朋友可以參考下
    2015-07-07
  • linux expect實(shí)現(xiàn)登陸遠(yuǎn)程主機(jī)并執(zhí)行命令示例代碼

    linux expect實(shí)現(xiàn)登陸遠(yuǎn)程主機(jī)并執(zhí)行命令示例代碼

    這篇文章主要給大家介紹了linux expect實(shí)現(xiàn)登陸遠(yuǎn)程主機(jī)并執(zhí)行命令的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Linux如何解決kill進(jìn)程失敗問題

    Linux如何解決kill進(jìn)程失敗問題

    這篇文章主要介紹了Linux如何解決kill進(jìn)程失敗問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07

最新評(píng)論

星子县| 亚东县| 古蔺县| 张北县| 铜陵市| 额尔古纳市| 德格县| 吴江市| 固镇县| 凤城市| 漳平市| 启东市| 晋州市| 临汾市| 长阳| 八宿县| 扶风县| 荥经县| 平江县| 永安市| 鸡泽县| 罗平县| 临邑县| 诸城市| 浮山县| 龙山县| 海晏县| 永新县| 唐海县| 百色市| 正定县| 苏州市| 铜梁县| 晋城| 大埔县| 浑源县| 新郑市| 开远市| 阿克陶县| 万载县| 米易县|