基本命令
執行以下命令備份整個文件系統:
sudo /usr/bin/tar -czpvf /home/zhaomu/backup/linux_backup.tar.gz /
其中各參數說明如下:
-
-c:表示歸檔。
-
-z:使用gzip格式備份。gzip的備份速度較快,但相比其他方式生成的備份文件也較大。
-
-p:備份的同時保留文件的權限,在恢復時不至于產生權限問題。
-
-v:顯示備份過程的詳細信息。
-
-f:指定備份的目錄和文件名。
-
/:表示備份整個文件系統。
增強命令
1、排除不需要備份的文件
以上備份命令并非最優方案,原因是整個文件系統中有大量不需要備份的文件,包括系統文件、臨時文件、歷史備份文件等。因此我們需要把這些文件都排除掉。
sudo /usr/bin/tar --exclude-from=/home/zhaomu/exclude.txt -czpvf /home/zhaomu/backup/linux_backup.tar.gz /
這里使用了–exclude-from指令定義了排除文件的路徑。一個典型的排除文件的內容如下:
/home/zhaomu/backup/* /tmp/* /proc/* /dev/* /sys/* /run/* /var/tmp/* /var/run/* /var/lock/*
首先,/home/zhaomu/backup目錄下的文件需要排除,否則之前備份的數據還會重復備份,導致備份文件越來越大。其次,在Linux系統中,tmp、proc、dev、sys、run都屬于動態創建的目錄,不需要備份,但需要保留這些目錄結構,因此我們排除了這些目錄下的文件,而沒有排除整個目錄。
2、給文件名加上日期
通過給文件名加上日期,可以區分不同時間創建的備份,建立一套備份鏈的機制。
sudo /usr/bin/tar --exclude-from=/home/zhaomu/exclude.txt -czpvf /home/zhaomu/backup/linux_backup-$(date +%F-%H-%M).tar.gz /
其中$(date +%F-%H-%M)這個參數,代表當前日期、當前小時和當前分鐘,比如:linux_backup-2020-03-02-15-22.tar.gz
3、使用xz壓縮算法
我們把-z指令換成-J指令,文件擴展名也從tar.gz換成tar.xz。xz壓縮算法比gzip壓縮算法要慢一些,但是壓縮比例更高,所以創建的備份文件也更小一些。
sudo /usr/bin/tar --exclude-from=/home/zhaomu/exclude.txt -cJpvf /home/zhaomu/backup/linux_backup-$(date +%F-%H-%M).tar.xz /
腳本整合
我們可以把以上命令整合到一個腳本中執行:
vi /home/zhaomu/bin/linux_backup.sh
腳本內容如下:
#!bin/sh _tarfile=/home/zhaomu/backup/linux_backup-$(date +%F-%H-%M).tar.xz sudo /usr/bin/tar --exclude-from=/home/zhaomu/exclude.txt -cJpvf $ /
賦予腳本執行權限:
sudo chmod +x /home/zhaomu/bin/linux_backup.sh
運行腳本開始備份:
sh /home/zhaomu/bin/linux_backup.sh