linux tar命令用法詳解

來源:互聯網
上載者:User

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=<編號檔案>   使用指定檔案內的編號取代預設的卷冊編號。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.