tar [-cxtzjvfpPN] 檔案與目錄 ….
範例:
範例一:將整個 /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 -zcvpf /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 與管線命令啦!
範例七:排除打包 可以使用-exclude參數
例:
排除指定檔案:
排除test目錄下a檔案夾
#tar -zcvf test.tar.gz --exclude=test/a test
排除test目錄下a、b檔案夾
#tar -zcvf test.tar.gz --exclude=test/a --exclude=test/b test
如:
tar cvfz backup_1.tar.gz /opt/data -exclude=resource*
在打包/opt/data時就排除了resource命名的目錄和檔案。
如果想不包含部分的特定檔案清單,可以把不包含的檔案放到一個檔案ext.txt
然後
tar cvfz backup_1.tar.gz -exclude=resource* -X ext.txt /opt/data
就可以了。
我的ext.txt檔案內容如下:
$ cat /tmp/ext.txt
/opt/data/devs/locks/db-logs.lock
/opt/data/devs/locks/db.lock
/opt/data/devs/hooks/post-revprop-change.tmpl
/opt/data/devs/hooks/pre-lock.tmpl
/opt/data/devs/hooks/post-unlock.tmpl
/opt/data/devs/db/transactions
/opt/data/devs/db/txn-current-lock
/opt/data/devs/db/write-lock
/opt/data/devs/db/format
/opt/data/devs/conf/passwd
這樣就可以在打包的時候不包含以上的檔案或者目錄。
參 數:
-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=<編號檔案> 使用指定檔案內的編號取代預設的卷冊編號。