轉:http://blog.csdn.net/teamlet/archive/2008/02/18/2104262.aspx
本文引用了兩部分tar的說明,第一部分是舉例說明使用tar。第二部分是詳細的參數說明。
第一部分:
tar命令
tar [-cxtzjvfpPN] 檔案與目錄 ....
參數:
-c :建立一個壓縮檔的參數指令(create 的意思);
-x :解開一個壓縮檔的參數指令。
-t :查看 tarfile 裡面的檔案。
特別注意,在參數的下達中, c/x/t 僅能存在一個。不可同時存在。
因為不可能同時壓縮與解壓縮。
-z :是否同時具有 gzip 的屬性。亦即是否需要用 gzip 壓縮。
-j :是否同時具有 bzip2 的屬性。亦即是否需要用 bzip2 壓縮。
-v :壓縮的過程中顯示檔案。這個常用,但不建議用在背景執行過程。
-f :使用檔名,請留意,在 f 之後要立即接檔名喔。不要再加參數。
例如使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成
『 tar -zcvPf tfile sfile』才對喔。
-p :使用原檔案的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮。
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進建立的檔案中。
--exclude FILE:在壓縮的過程中,不要將 FILE 打包。
範例:
範例一:將整個 /etc 目錄下的檔案全部打包成為 /tmp/etc.tar
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==僅打包,不壓縮。
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包後,以 gzip 壓縮
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包後,以 bzip2 壓縮
# 特別注意,在參數 f 之後的檔案檔名是自己取的,我們習慣上都用 .tar 來作為辨識。
# 如果加 z 參數,則以 .tar.gz 或 .tgz 來代表 gzip 壓縮過的 tar file ~
# 如果加 j 參數,則以 .tar.bz2 來作為附檔名啊~
# 上述指令在執行的時候,會顯示一個警告訊息:
# 『tar: Removing leading `/" from member names』那是關於絕對路徑的特殊設定。
範例二:查閱上述 /tmp/etc.tar.gz 檔案內有哪些檔案。
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz
# 由於我們使用 gzip 壓縮,所以要查閱該 tar file 內的檔案時,
# 就得要加上 z 這個參數了。這很重要的。
範例三:將 /tmp/etc.tar.gz 檔案解壓縮在 /usr/local/src 底下
[root@linux ~]# cd /usr/local/src
[root@linux src]# tar -zxvf /tmp/etc.tar.gz
# 在預設的情況下,我們可以將壓縮檔在任何地方解開的。以這個範例來說,
# 我先將工作目錄變換到 /usr/local/src 底下,並且解開 /tmp/etc.tar.gz ,
# 則解開的目錄會在 /usr/local/src/etc 呢。另外,如果您進入 /usr/local/src/etc
# 則會發現,該目錄下的檔案屬性與 /etc/ 可能會有所不同喔。
範例四:在 /tmp 底下,我只想要將 /tmp/etc.tar.gz 內的 etc/passwd 解開而已
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd
# 我可以透過 tar -ztvf 來查閱 tarfile 內的檔案名稱,如果單只要一個檔案,
# 就可以透過這個方式來下達。注意到。 etc.tar.gz 內的根目錄 / 是被拿掉了。
範例五:將 /etc/ 內的所有檔案備份下來,並且儲存其許可權。
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc
# 這個 -p 的屬性是很重要的,尤其是當您要保留原本檔案的屬性時。
範例六:在 /home 當中,比 2005/06/01 新的檔案才備份
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home
範例七:我要備份 /home, /etc ,但不要 /home/dmtsai
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
範例八:將 /etc/ 打包後直接解開在 /tmp 底下,而不產生檔案。
[root@linux ~]# cd /tmp
[root@linux tmp]# tar -cvf - /etc | tar -xvf -
# 這個動作有點像是 cp -r /etc /tmp
# 要注意的地方在與輸出檔變成 - 而輸入檔也變成 - ,又有一個 | 存在
# 這分別代表 standard output, standard input 與管線命令。
=====================================================
第二部分:
tar 命令
tar 檔案檔案管理程式的 GNU 版本。下面將逐個介紹其含義
總覽
tar [ - ] A --catenate --concatenate | c --create | d --diff --compare | r --append | t --list | u --update | x -extract --get [ --atime-preserve ] [ -b, --block-size N ] [ -B, --read-full-blocks ] [ -C, --directory DIR ] [ --checkpoint ]
[ -f, --file [HOSTNAME:]F ] [ --force-local ]
[ -F, --info-script F --new-volume-script F ] [ -G, --incremental ] [ -g, --listed-incremental F ] [ -h, --dereference ] [ -i, --ignore-zeros ] [ -I, --bzip ] [ --ignore-failed-read ] [ -k, --keep-old-files ] [ -K, --starting-file F ] [ -l, --one-file-system ] [ -L, --tape-length N ] [ -m, --modification-time ] [ -M, --multi-volume ] [ -N, --after-date DATE, --newer DATE ] [ -o, --old-archive, --portability ] [ -O, --to-stdout ] [ -p, --same-permissions, --preserve-permissions ] [ -P, --absolute-paths ] [ --preserve ]
[ -R, --record-number ] [ --remove-files ] [ -s, --same-order, --preserve-order ] [ --same-owner ] [ -S, --sparse ] [ -T, --files-from F ] [ --null ]
[ --totals ]
[ -v, --verbose ] [ -V, --label NAME ] [ --version ]
[ -w, --interactive, --confirmation ] [ -W, --verify ]
[ --exclude FILE ] [ -X, --exclude-from FILE ] [ -Z, --compress, --uncompress ] [ -z, --gzip, --ungzip ]
[ --use-compress-program PROG ] [ --block-compress ] [ -[0-7][lmh] ]
filename1 [ filename2, ... filenameN ]
directory1 [ directory2, ...directoryN ]
描述
tar 程式用於儲存或展開 tar 封存檔案。封存檔案可放在磁碟中 ,也可以存為普通檔案。 tar是需要參數的,可選的參數是A、c、d、r、t、u、x,您在使用tar時必須首先為 tar 指定至少一個參數;然後,您必須指定要處理的檔案或目錄。如果指定一個目錄則該目錄下的所有子目錄都將被加入存檔。
應用舉例:
1)展開 abc.tar.gz 使用命令: tar xvzf abc.tar.gz 展開 abc.tar 使用命令: tar xvf abc.tar
2)將目前的目錄下的 man 目錄及其子目錄存成存檔 man.tar tar cf man.tar ./man
參數說明
運行tar時必須要有下列參數中的至少一個才可運行
-A, --catenate, --concatenate
將一存檔與已有的存檔合并
-c, --create
建立新的存檔
-d, --diff, --compare
比較存檔與當前檔案的不同之處
--delete
從存檔中刪除
-r, --append
附加到存檔結尾
-t, --list
列出存檔中檔案的目錄
-u, --update
僅將較新的檔案附加到存檔中
-x, --extract, --get
從存檔展開檔案
其他參數
--atime-preserve
不改變轉儲檔案的存取時間
-b, --block-size N
指定塊大小為 Nx512 位元組(預設時 N=20)
-B, --read-full-blocks
讀取時重組塊(。。。。。。)
-C, --directory DIR
轉到指定的目錄
--checkpoint
讀取存檔時顯示目錄名
-f, --file [HOSTNAME:]F
指定存檔或裝置 (預設為 /dev/rmt0)
--force-local
強制使用本地存檔,即使存在複製
-F, --info-script F --new-volume-script F
在每個磁碟結尾使用指令碼 F (隱含 -M)
-G, --incremental
建立老 GNU 格式的備份
-g, --listed-incremental F
建立新 GNU 格式的備份
-h, --dereference
不轉儲動態連結,轉儲動態連結指向的檔案。
-i, --ignore-zeros
忽略存檔中的 0 位元組塊(通常意味著檔案結束)
--ignore-failed-read
在不可讀檔案中作 0 標記後再退出。。。
-k, --keep-old-files
儲存現有檔案;從存檔中展開時不進行覆蓋
-K, --starting-file F
從封存檔案 F 開始
-l, --one-file-system
在本地檔案系統中建立存檔
-L, --tape-length N
在寫入 N*1024 個位元組後暫停,等待更換磁碟
-m, --modification-time
當從一個檔案中恢複檔案時,不使用新的時間標籤
-M, --multi-volume
建立多卷存檔,以便在幾個磁碟中存放
-N, --after-date DATE, --newer DATE
僅儲存時間較新的檔案
-o, --old-archive, --portability
以 V7 格式存檔,不用 ANSI 格式
-O, --to-stdout
將檔案展開到標準輸出
-p, --same-permissions, --preserve-permissions
展開所有保護資訊
-P, --absolute-paths
不要從檔案名稱中去除 '/'
--preserve
like -p -s
與 -p -s 相似
-R, --record-number
顯示資訊時同時顯示存檔中的記錄數
--remove-files
建立存檔後刪除源檔案
-s, --same-order, --preserve-order
。。。
--same-owner
展開以後使所有檔案屬於同一所有者
-S, --sparse
高效處理
-T, --files-from F
從檔案中得到要展開或要建立的檔案名稱
--null
讀取空結束的檔案名稱,使 -C 失效
--totals
顯示用 --create 參數寫入的總位元組數
-v, --verbose
詳細顯示處理的檔案
-V, --label NAME
為存檔指定卷標
--version
顯示 tar 程式的版本號碼
-w, --interactive, --confirmation
每個操作都要求確認
-W, --verify
寫入存檔後進行校正
--exclude FILE
不把指定檔案包含在內
-X, --exclude-from FILE
從指定檔案中讀入不想包含的檔案的列表
-y, --bzip2, --bunzip2
用 bzip2 對存檔壓縮或解壓
-Z, --compress, --uncompress
用 compress 對存檔壓縮或解壓
-z, --gzip, --ungzip
用 gzip 對存檔壓縮或解壓
--use-compress-program PROG
用 PROG 對存檔壓縮或解壓 ( PROG 需能接受 -d 參數)
--block-compress
為便於磁碟儲存,按塊記錄存檔
-[0-7][lmh]
指定磁碟機和密度[高中低]