linux使用tar命令備份系統
Linux tar 命令
Linux tar(英文全拼:tape archive )命令用於備份檔案。
tar 是用來建立,還原備份檔案的工具程式,它可以加入,解開備份檔案內的檔案。
語法
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <區塊數目>][-C <目的目錄>][-f <備份檔案>][-F <Script檔案>][-K <檔案>][-L <媒體容量>][-N <日期時間>][-T <範本檔案>][-V <卷冊名稱>][-X <範本檔案>][-<裝置編號><儲存密度>][--after-date=<日期時間>][--atime-preserve][--backuup=<備份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<範本樣式>][--force-local][--group=<群組名稱>][--help][--ignore-failed-read][--new-volume-script=<Script檔案>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<使用者名稱稱>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<區塊數目>][--recursive-unlink][--remove-files][--rsh-command=<執行指令>][--same-owner][--suffix=<備份字尾字串>][--totals][--use-compress-program=<執行指令>][--version][--volno-file=<編號檔案>][檔案或目錄...]
引數:
- -A或--catenate 新增檔案到已存在的備份檔案。
- -b<區塊數目>或--blocking-factor=<區塊數目> 設定每筆記錄的區塊數目,每個區塊大小為12Bytes。
- -B或--read-full-records 讀取資料時重設區塊大小。
- -c或--create 建立新的備份檔案。
- -C<目的目錄>或--directory=<目的目錄> 切換到指定的目錄。
- -d或--diff或--compare 對比備份檔案內和檔案系統上的檔案的差異。
- -f<備份檔案>或--file=<備份檔案> 指定備份檔案。
- -F<Script檔案>或--info-script=<Script檔案> 每次更換磁帶時,就執行指定的Script檔案。
- -g或--listed-incremental 處理GNU格式的大量備份。
- -G或--incremental 處理舊的GNU格式的大量備份。
- -h或--dereference 不建立符號連線,直接複製該連線所指向的原始檔案。
- -i或--ignore-zeros 忽略備份檔案中的0 Byte區塊,也就是EOF。
- -k或--keep-old-files 解開備份檔案時,不覆蓋已有的檔案。
- -K<檔案>或--starting-file=<檔案> 從指定的檔案開始還原。
- -l或--one-file-system 複製的檔案或目錄存放的檔案系統,必須與tar指令執行時所處的檔案系統相同,否則不予複製。
- -L<媒體容量>或-tape-length=<媒體容量> 設定存放每體的容量,單位以1024 Bytes計算。
- -m或--modification-time 還原檔案時,不變更檔案的更改時間。
- -M或--multi-volume 在建立,還原備份檔案或列出其中的內容時,採用多卷冊模式。
- -N<日期格式>或--newer=<日期時間> 只將較指定日期更新的檔案儲存到備份檔案裡。
- -o或--old-archive或--portability 將資料寫入備份檔案時使用V7格式。
- -O或--stdout 把從備份檔案裡還原的檔案輸出到標準輸出裝置。
- -p或--same-permissions 用原來的檔案許可權還原檔案。
- -P或--absolute-names 檔名使用絕對名稱,不移除檔名稱前的"/"號。
- -r或--append 新增檔案到已存在的備份檔案的結尾部分。
- -R或--block-number 列出每個資訊在備份檔案中的區塊編號。
- -s或--same-order 還原檔案的順序和備份檔案內的存放順序相同。
- -S或--sparse 倘若一個檔案內含大量的連續0位元組,則將此檔案存成稀疏檔案。
- -t或--list 列出備份檔案的內容。
- -T<範本檔案>或--files-from=<範本檔案> 指定範本檔案,其內含有一個或多個範本樣式,讓tar解開或建立符合設定條件的檔案。
- -u或--update 僅置換較備份檔案內的檔案更新的檔案。
- -U或--unlink-first 解開壓縮檔案還原檔案之前,先解除檔案的連線。
- -v或--verbose 顯示指令執行過程。
- -V<卷冊名稱>或--label=<卷冊名稱> 建立使用指定的卷冊名稱的備份檔案。
- -w或--interactive 遭遇問題時先詢問使用者。
- -W或--verify 寫入備份檔案後,確認檔案正確無誤。
- -x或--extract或--get 從備份檔案中還原檔案。
- -X<範本檔案>或--exclude-from=<範本檔案> 指定範本檔案,其內含有一個或多個範本樣式,讓ar排除符合設定條件的檔案。
- -z或--gzip或--ungzip 通過gzip指令處理備份檔案。
- -Z或--compress或--uncompress 通過compress指令處理備份檔案。
- -<裝置編號><儲存密度> 設定備份用的外圍裝置編號及存放資料的密度。
- --after-date=<日期時間> 此引數的效果和指定"-N"引數相同。
- --atime-preserve 不變更檔案的存取時間。
- --backup=<備份方式>或--backup 移除檔案前先進行備份。
- --checkpoint 讀取備份檔案時列出目錄名稱。
- --concatenate 此引數的效果和指定"-A"引數相同。
- --confirmation 此引數的效果和指定"-w"引數相同。
- --delete 從備份檔案中刪除指定的檔案。
- --exclude=<範本樣式> 排除符合範本樣式的檔案。
- --group=<群組名稱> 把加入裝置檔案中的檔案的所屬群組設成指定的群組。
- --help 線上幫助。
- --ignore-failed-read 忽略資料讀取錯誤,不中斷程式的執行。
- --new-volume-script=<Script檔案> 此引數的效果和指定"-F"引數相同。
- --newer-mtime 只儲存更改過的檔案。
- --no-recursion 不做遞迴處理,也就是指定目錄下的所有檔案及子目錄不予處理。
- --null 從null裝置讀取檔名稱。
- --numeric-owner 以使用者識別碼及群組識別碼取代使用者名稱稱和群組名稱。
- --owner=<使用者名稱稱> 把加入備份檔案中的檔案的擁有者設成指定的使用者。
- --posix 將資料寫入備份檔案時使用POSIX格式。
- --preserve 此引數的效果和指定"-ps"引數相同。
- --preserve-order 此引數的效果和指定"-A"引數相同。
- --preserve-permissions 此引數的效果和指定"-p"引數相同。
- --record-size=<區塊數目> 此引數的效果和指定"-b"引數相同。
- --recursive-unlink 解開壓縮檔案還原目錄之前,先解除整個目錄下所有檔案的連線。
- --remove-files 檔案加入備份檔案後,就將其刪除。
- --rsh-command=<執行指令> 設定要在遠端主機上執行的指令,以取代rsh指令。
- --same-owner 嘗試以相同的檔案擁有者還原檔案。
- --suffix=<備份字尾字串> 移除檔案前先行備份。
- --totals 備份檔案建立後,列出檔案大小。
- --use-compress-program=<執行指令> 通過指定的指令處理備份檔案。
- --version 顯示版本資訊。
- --volno-file=<編號檔案> 使用指定檔案內的編號取代預設的卷冊編號。
linux-tar備份
1. 備份系統
首先成為root使用者:
$ sudo su
然後進入檔案系統的根目錄(當然,如果你不想備份整個檔案系統,你也可以進入你想要備份的目錄,包括遠端目錄或者行動硬碟上的目錄):
# cd /
下面是我用來備份系統的完整命令:
# tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
“tar”當然就是我們備份系統所使用的程式了。
“cvpfz”是tar的選項,意思是“建立檔案檔案”、“保持許可權”(保留所有東西原來的許可權)、“使用gzip來減小檔案尺寸”。
“backup.gz”是我們將要得到的檔案檔案的檔名。
“/”是我們要備份的目錄,在這裡是整個檔案系統。
在 檔案檔名“backup.gz”和要備份的目錄名“/”之間給出了備份時必須排除在外的目錄。有些目錄是無用的,例如“/proc”、“/lost+ found”、“/sys”。當然,“backup.gz”這個檔案檔案本身必須排除在外,否則你可能會得到一些超出常理的結果。如果不把“/mnt”排 除在外,那麼掛載在“/mnt”上的其它分割槽也會被備份。另外需要確認一下“/media”上沒有掛載任何東西(例如光碟、行動硬碟),如果有掛載東西, 必須把“/media”也排除在外。
有人可能會建議你把“/dev”目錄排除在外,但是我認為這樣做很不妥,具體原因這裡就不討論了。
備份完成後,在檔案系統的根目錄將生成一個名為“backup.tgz”的檔案
在備份命令結束時你可能會看到這樣一個提示:’tar: Error exit delayed from previous errors’,多數情況下你可以忽略它。
你還可以用Bzip2來壓縮檔案,Bzip2比gzip的壓縮率高,但是速度慢一些。如果壓縮率對你來說很重要,那麼你應該使用Bzip2,用“j”代替命令中的“z”,並且給檔案檔案一個正確的副檔名“bz2”。完整的命令如下:
# tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclude=/mnt –exclude=/sys /
2. 恢復系統
切換到root使用者,並把檔案“backup.tgz”拷貝到分割槽的根目錄下。
使用下面的命令來恢復系統:
# tar xvpfz backup.tgz -C /
如果你的檔案檔案是使用Bzip2壓縮的,應該用:
# tar xvpfj backup.tar.bz2 -C /
重新建立那些在備份時被排除在外的目錄:
# mkdir proc # mkdir lost+found # mkdir mnt # mkdir sys
1 |
<br>restorecon-Rv/ # 這條指令必須執行,否則重啟無法進入系統
|
重啟系統 reboot
備份指定資料夾
tar -xvzf /abc/bcd/mm_20141223.tar.gz /aaa/bbb/ccc.txt 將檔案/aaa/bbb/ccc.txt壓縮到另一個路徑/abc/bcd/下,並以mm_20141223.tar.gz名字命名