tar是Linux環境下最常用的備份工具之一。tar(taparchive)原意為操作磁帶文件,但基於Linux的文件操作機制,同樣也可適用於普通的磁盤文件。tar可用於建立、還原、查看、管理文件,也可方便的追加新文件到備份文件中,或僅更新部分的備份文件,以及解壓、刪除指定的文件。熟悉其常用參數,能方便日常的系統管理工作。
一、版本
還是那句,不同的操作系統,tar的命令參數是有點區別的:
引用# tar --version
tar (GNU tar) 1.14
二、簡單操作
命令格式:
tar [options] [tarfile] [other-files]
tar--long-option -function-options files
tar可使用的參數非常多,先列舉幾個最常用的參數:
引用-t, --list
列出歸檔文件內容目錄
-x, --extract, --get
從歸檔文件中解析文件
-c, --create
創建新的歸檔文件
上面三個參數,不能同時存在,僅能使用其中一個,即t/x/c
-f file, --file=file
指定備份文件,或設備,例如磁帶機/dev/st0
-v, --verbose
顯示命令的執行過程
-Z, --compress, --uncompress
使用compress命令處理備份文件
-z, --gzip, --gunzip, --ungzip
使用gzip命令處理備份文件
-j, --I, --bzip
使用bzip2命令處理備份文件
-z和-j都是在備份文件打包後才進行壓縮的操作的,並且,該操作會影響其他的參數,後面會再提到
-C directory, --directory=directory
先進入指定的目錄,再釋放
簡單使用:
把/etc目錄中所有的文件打包為etc.tar文件
tar -cvf /tmp/etc.tar /etc
把/etc目錄中所有的文件打包並使用gzip壓縮為etc.tar.gz文件
tar -zcvf /tmp/etc.tar.gz /etc
把/etc目錄中所有的文件打包並使用bzip2壓縮為etc.tar.bz2文件
這裡的,tar.gz或tar.bz2都是慣例,為方便標識的,例如:tgz等,並不是特定條件,但建議遵循慣例
tar -jcvf /tmp/etc.tar.bz2 /etc
查看備份包中的內容,若為已經壓縮的文件,需加上-z或者-j參數
tar -ztvf /tmp/etc.tar.gz
默認情況下,tar打包時都是使用相對路徑的,所以,釋放時,需要先進入目錄目錄,然後再解壓
同樣的,根據使用的壓縮方式,應加上-z或者-j參數
cd /tmp && tar -zxvf /tmp/etc.tar.gz
這是另一種寫法,結果和上面的相同,其會先進入/tmp目錄,然後再釋放包的
tar -zxvf /tmp/etc.tar.gz -C /tmp
釋放單個etc/passwd文件,正如前面提到的,tar包中的是相對路徑,所以不能使用“/etc/passwd”
而且,這裡不能使用-C參數,釋放文件是當前路徑的相對路徑,並帶目錄釋放
tar -zxvf /tmp/etc.tar.gz etc/passwd
tar還可以支持很多額外的參數,方便我們在備份和釋放的時候進行控制。 三、更多參數
以三大常見操作為序說明。
1、備份
引用-d, --diff, --compare
找出歸檔文件和文件系統的不同之處
-r, --append
將文件附加到歸檔文件之後
-u, --update
只附加比歸檔中新的文件
-A, --catenate
將 tar 文件附加到歸檔文件之後
--concatenate
與 -A 相同
--delete
從歸檔文件中刪除 (不能在磁帶上!)
-N date, --newer=date, --after-date=date
只將比指定日期更新的文件保存到備份文件
--exclude=pattern
排除符合查找模式的文件
-P, --absolute-names
備份文件中的文件名使用絕對路徑,而不移除文件名前的“/”,默認是相對路徑的
-l, --one-file-system
復制文件或目錄存放的文件系統必須和tar命令當前執行的文件系統相同,否則不執行;也就是講,不處理其他分區的文件。(可忽略mount掛載分區的問題)
--mode=permissions
備份時,把加入備份文件中的文件屬性修改為指定的屬性,格式和chmod命令接受的格式相同
--group=group
備份時,把加入備份文件中的文件所屬組設定成指定的組
--owner=owner
備份時,把把加入備份文件中的文件所有者設定成指定的用戶
--numeric-owner
以UID和GID代替用戶名和組名
--recursion
遞歸模式(默認)
--no-recursion
不進行遞歸處理,即不把指定目錄下的所有文件和文件夾都備份
--newer-mtime=date
Add only files whose contents have changed since date to the archive.
僅增加指定日期後修改過內容的文件到備份文件中
123下一頁