21 ví dụ về lệnh tar trên Centos / Ubuntu / Debian / Fedora

Lệnh tar là lệnh được sử dụng rộng rãi nhất để tạo các tệp lưu trữ nén có thể di chuyển dễ dàng từ một ổ đĩa này sang ổ đĩa khác hoặc từ máy này sang máy khác. Trong bài viết này, bạn có thể tham khảo về các ví dụ lệnh tar bao gồm cách tạo các tệp lưu trữ sử dụng nén (tar, tar.gz và tar.bz2), cách giải nén các tệp lưu trữ, giải nén một tệp duy nhất, xem nội dung của tệp, xác minh một tệp, thêm các tệp hoặc thư mục vào tệp lưu trữ hiện có, ước tính kích thước của tệp lưu trữ tar,...

Top 21 ví dụ cơ bản của lệnh tar trong hệ điều hành Linux

Lệnh tar là một tiện ích lưu trữ trong Linux

Lệnh tar là gì và những tùy chọn của nó

Lệnh "tar" trong Linux viết tắt của "tape archive", được sử dụng bởi nhiều quản trị hệ thống Linux/Unix để làm việc với việc sao lưu dữ liệu trên băng ghi trong Linux.

Lệnh "tar" trong Linux được sử dụng để gói gọn một bộ sưu tập các tệp và thư mục vào một tệp lưu trữ nén cao thường được gọi là "tarball" hoặc "tar", "gzip" và "bzip" trong Linux.

Mục đích chính của hướng dẫn sau là cung cấp các ví dụ về lệnh tar khác nhau có thể giúp bạn hiểu và trở thành một chuyên gia trong việc xử lý tệp lưu trữ tar.

Tùy chọn và cách sử dụng lệnh Tar:

-c - tạo một tệp lưu trữ

-x - giải nén một tệp lưu trữ

-v - hiển thị tiến trình của tệp lưu trữ

-f - tên tệp lưu trữ

-t - xem nội dung của tệp lưu trữ

-u - lưu trữ và thêm vào tệp lưu trữ hiện có

-j - lọc tệp lưu trữ thông qua bzip2

-z - lọc tệp lưu trữ thông qua gzip

-r - thêm hoặc cập nhật tệp hoặc thư mục vào tệp lưu trữ hiện có

-W - Xác minh một tệp lưu trữ

-A - nối các tệp lưu trữ

--wildcards - Chỉ định các mẫu trong lệnh tar UNIX

--exclude - loại trừ tệp và thư mục khi tạo tệp lưu trữ

--delete - xóa tệp và thư mục khỏi tệp lưu trữ

Top 21 ví dụ ứng dụng của lệnh tar

Tạo tệp tar trong Linux

Dưới đây là ví dụ về lệnh tar sẽ tạo một tệp lưu trữ tar có tên tecmint-14-09-12.tar cho một thư mục /home/tecmint trong thư mục làm việc hiện tại.

# tar -cvf tecmint-14-09-12.tar /home/tecmint/

/home/tecmint/
/home/tecmint/cleanfiles.sh
/home/tecmint/openvpn-2.1.4.tar.gz
/home/tecmint/tecmint-14-09-12.tar
/home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
/home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

Các tùy chọn được sử dụng trong lệnh tar trên để tạo một tệp lưu trữ tar:

c - Tạo một tệp lưu trữ .tar mới. Tùy chọn này cho biết rằng chúng ta muốn tạo một tệp lưu trữ mới và thêm các tệp và thư mục vào đó.

v - Hiển thị thông tin chi tiết về quá trình tạo tệp .tar. Tùy chọn này được gọi là "verbosely" và nó sẽ hiển thị tiến trình đang diễn ra khi tạo tệp lưu trữ.

f - Xác định kiểu tệp của tệp lưu trữ. Trong ví dụ này, tùy chọn "f" được sử dụng để chỉ định tên tệp lưu trữ của tệp .tar mới được tạo ra là "tecmint-14-09-12.tar".

Tạo tệp tar.gz trong Linux

Để tạo một tệp lưu trữ nén gzip, chúng ta sử dụng tùy chọn z. Ví dụ, lệnh dưới đây sẽ tạo một tệp nén MyImages-14-09-12.tar.gz cho thư mục /home/MyImages. (Lưu ý: tar.gz và tgz đều tương tự).

# tar cvzf MyImages-14-09-12.tar.gz /home/MyImages
OR
# tar cvzf MyImages-14-09-12.tgz /home/MyImages

/home/MyImages/
/home/MyImages/Sara-Khan-and-model-Priyanka-Shah.jpg
/home/MyImages/RobertKristenviolent101201.jpg
/home/MyImages/Justintimerlake101125.jpg
/home/MyImages/Mileyphoto101203.jpg
/home/MyImages/JenniferRobert101130.jpg
/home/MyImages/katrinabarbiedoll231110.jpg
/home/MyImages/the-japanese-wife-press-conference.jpg
/home/MyImages/ReesewitherspoonCIA101202.jpg
/home/MyImages/yanaguptabaresf231110.jpg

Tạo tệp tar.bz2 trong Linux

Tính năng bz2 nén và tạo một tệp lưu trữ có kích thước nhỏ hơn so với gzip. Việc nén và giải nén tệp với nén bz2 mất nhiều thời gian hơn so với gzip, nhưng thời gian nén gzip lại ít hơn.

Để tạo một tệp tar nén cao, chúng ta sử dụng tùy chọn j. Lệnh ví dụ dưới đây sẽ tạo một tệp Phpfiles-org.tar.bz2 cho thư mục /home/php. (Lưu ý: tar.bz2 và tbz tương tự như tb2).

# tar cvfj Phpfiles-org.tar.bz2 /home/php
OR
# tar cvfj Phpfiles-org.tar.tbz /home/php
OR 
# tar cvfj Phpfiles-org.tar.tb2 /home/php

/home/php/
/home/php/iframe_ew.php
/home/php/videos_all.php
/home/php/rss.php
/home/php/index.php
/home/php/vendor.php
/home/php/video_title.php
/home/php/report.php
/home/php/object.html
/home/php/video.php

Giải nén tệp Tar trong Linux

Để giải nén hoặc trích xuất một tệp tar, chỉ cần thực hiện lệnh sau sử dụng tùy chọn x (giải nén). Ví dụ, lệnh dưới đây sẽ giải nén tệp public_html-14-09-12.tar trong thư mục làm việc hiện tại.

Nếu bạn muốn giải nén vào một thư mục khác, hãy sử dụng tùy chọn -C (thư mục được chỉ định).

## Untar files in Current Directory ##
# tar -xvf public_html-14-09-12.tar

## Untar files in specified Directory ##
# tar -xvf public_html-14-09-12.tar -C /home/public_html/videos/

/home/public_html/videos/
/home/public_html/videos/views.php
/home/public_html/videos/index.php
/home/public_html/videos/logout.php
/home/public_html/videos/all_categories.php
/home/public_html/videos/feeds.xml

Giải nén tệp tar.gz trong Linux

Để giải nén tệp lưu trữ tar.gz, chỉ cần chạy lệnh sau đây. Nếu chúng ta muốn giải nén vào các thư mục khác nhau, chỉ cần sử dụng tùy chọn -C và đường dẫn thư mục, như trong ví dụ trên.

# tar -xvf thumbnails-14-09-12.tar.gz

/home/public_html/videos/thumbnails/
/home/public_html/videos/thumbnails/katdeepika231110.jpg
/home/public_html/videos/thumbnails/katrinabarbiedoll231110.jpg
/home/public_html/videos/thumbnails/onceuponatime101125.jpg
/home/public_html/videos/thumbnails/playbutton.png
/home/public_html/videos/thumbnails/ReesewitherspoonCIA101202.jpg
/home/public_html/videos/thumbnails/snagItNarration.jpg
/home/public_html/videos/thumbnails/Minissha-Lamba.jpg
/home/public_html/videos/thumbnails/Lindsaydance101201.jpg
/home/public_html/videos/thumbnails/Mileyphoto101203.jpg

Giải nén tệp tar.bz2 trong Linux

Để giải nén tệp lưu trữ tar.bz2 được nén cao, chỉ cần sử dụng lệnh sau đây. Lệnh ví dụ dưới đây sẽ giải nén tất cả các tệp .flv từ tệp lưu trữ.

# tar -xvf videos-14-09-12.tar.bz2

/home/public_html/videos/flv/katrinabarbiedoll231110.flv
/home/public_html/videos/flv/BrookmuellerCIA101125.flv
/home/public_html/videos/flv/dollybackinbb4101125.fl
/home/public_html/videos/flv/JenniferRobert101130.flv
/home/public_html/videos/flv/JustinAwardmovie101125.flv
/home/public_html/videos/flv/Lakme-Fashion-Week.flv
/home/public_html/videos/flv/Mileyphoto101203.flv
/home/public_html/videos/flv/Minissha-Lamba.flv

Liệt kê các tệp Tar trong Linux

Để liệt kê nội dung của tệp lưu trữ tar, chỉ cần chạy lệnh sau đây với tùy chọn t (liệt kê nội dung). Lệnh dưới đây sẽ liệt kê nội dung của tệp uploadprogress.tar.

# tar -tvf uploadprogress.tar

-rw-r--r-- chregu/staff   2276 2011-08-15 18:51:10 package2.xml
-rw-r--r-- chregu/staff   7877 2011-08-15 18:51:10 uploadprogress/examples/
index.php
-rw-r--r-- chregu/staff   1685 2011-08-15 18:51:10 uploadprogress/examples/
server.php
-rw-r--r-- chregu/staff   1697 2011-08-15 18:51:10 uploadprogress/examples/
info.php
-rw-r--r-- chregu/staff    367 2011-08-15 18:51:10 uploadprogress/
config.m4
-rw-r--r-- chregu/staff    303 2011-08-15 18:51:10 uploadprogress/
config.w32
-rw-r--r-- chregu/staff   3563 2011-08-15 18:51:10 uploadprogress/
php_uploadprogress.h
-rw-r--r-- chregu/staff  15433 2011-08-15 18:51:10 uploadprogress/
uploadprogress.c
-rw-r--r-- chregu/staff   1433 2011-08-15 18:51:10 package.xml

Liệt kê các tệp tar.gz trong Linux

Sử dụng lệnh sau để liệt kê nội dung của tệp tar.gz:

# tar -tvf staging.tecmint.com.tar.gz

-rw-r--r-- root/root   0 2012-08-30 04:03:57 staging.tecmint.com-access_log
-rw-r--r-- root/root   587 2012-08-29 18:35:12 staging.tecmint.com-access_log.1
-rw-r--r-- root/root   156 2012-01-21 07:17:56 staging.tecmint.com-access_log.2
-rw-r--r-- root/root   156 2011-12-21 11:30:56 staging.tecmint.com-access_log.3
-rw-r--r-- root/root   156 2011-11-20 17:28:24 staging.tecmint.com-access_log.4
-rw-r--r-- root/root   0 2012-08-30 04:03:57 staging.tecmint.com-error_log
-rw-r--r-- root/root   981 2012-08-29 18:35:12 staging.tecmint.com-error_log.1
-rw-r--r-- root/root   211 2012-01-21 07:17:56 staging.tecmint.com-error_log.2
-rw-r--r-- root/root   211 2011-12-21 11:30:56 staging.tecmint.com-error_log.3
-rw-r--r-- root/root   211 2011-11-20 17:28:24 staging.tecmint.com-error_log.4

Liệt kê các tệp tar.bz2 trong Linux

Để liệt kê nội dung của tệp tar.bz2 , hãy thực hiện như ví dụ bên dưới:

# tar -tvf Phpfiles-org.tar.bz2

drwxr-xr-x root/root         0 2012-09-15 03:06:08 /home/php/
-rw-r--r-- root/root      1751 2012-09-15 03:06:08 /home/php/iframe_ew.php
-rw-r--r-- root/root     11220 2012-09-15 03:06:08 /home/php/videos_all.php
-rw-r--r-- root/root      2152 2012-09-15 03:06:08 /home/php/rss.php
-rw-r--r-- root/root      3021 2012-09-15 03:06:08 /home/php/index.php
-rw-r--r-- root/root      2554 2012-09-15 03:06:08 /home/php/vendor.php
-rw-r--r-- root/root       406 2012-09-15 03:06:08 /home/php/video_title.php
-rw-r--r-- root/root      4116 2012-09-15 03:06:08 /home/php/report.php
-rw-r--r-- root/root      1273 2012-09-15 03:06:08 /home/php/object.html

Trích xuất một tệp từ tệp lưu trữ tar

Để trích xuất một tệp duy nhất có tên cleanfiles.sh từ cleanfiles.sh.tar, bạn có thể sử dụng lệnh sau:

# tar -xvf cleanfiles.sh.tar cleanfiles.sh
OR
# tar --extract --file=cleanfiles.sh.tar cleanfiles.sh

cleanfiles.sh

Trích xuất một tệp từ tệp lưu trữ tar.gz 

Để trích xuất một tệp duy nhất có tên tecmintbackup.xml từ tệp lưu trữ tecmintbackup.tar.gz, bạn có thể sử dụng lệnh sau:

# tar -zxvf tecmintbackup.tar.gz tecmintbackup.xml
OR
# tar --extract --file=tecmintbackup.tar.gz tecmintbackup.xml

tecmintbackup.xml

Trích xuất một tệp từ tệp lưu trữ tar.bz2

Để trích xuất một tệp duy nhất có tên index.php từ tệp Phpfiles-org.tar.bz2, bạn có thể sử dụng tùy chọn sau:

# tar -jxvf Phpfiles-org.tar.bz2 home/php/index.php
OR
# tar --extract --file=Phpfiles-org.tar.bz2 /home/php/index.php

/home/php/index.php

Trích xuất nhiều tệp từ các tệp lưu trữ tar

Để trích xuất hoặc giải nén nhiều tệp từ các tệp lưu trữ tar, tar.gz và tar.bz2, Ví dụ, để trích xuất "file 1" và "file 2" từ các tệp lưu trữ bạn có thể sử dụng lệnh sau:

# tar -xvf tecmint-14-09-12.tar "file1" "file2" 

# tar -zxvf MyImages-14-09-12.tar.gz "file1" "file2" 

# tar -jxvf Phpfiles-org.tar.bz2 "file1" "file2"

Trích xuất một nhóm tệp sử dụng ký tự đại diện (wildcard)

Để trích xuất một nhóm tệp hãy sử dụng ký tự đại diện (wildcard) trong Linux, Ví dụ, để trích xuất tất cả các tệp có mẫu bắt đầu bằng .php từ tệp lưu trữ tar, tar.gz hoặc tar.bz2, bạn có thể chạy lệnh sau:

# tar -xvf Phpfiles-org.tar --wildcards '*.php'

# tar -zxvf Phpfiles-org.tar.gz --wildcards '*.php'

# tar -jxvf Phpfiles-org.tar.bz2 --wildcards '*.php'

/home/php/iframe_ew.php
/home/php/videos_all.php
/home/php/rss.php
/home/php/index.php
/home/php/vendor.php
/home/php/video_title.php
/home/php/report.php
/home/php/video.php

Thêm tệp hoặc thư mục vào tệp lưu trữ tar

Để thêm tệp hoặc thư mục vào tệp lưu trữ tar hiện có trong Linux, chúng ta sử dụng tùy chọn r (append). Ví dụ, để thêm tệp xyz.txt và thư mục php vào tệp lưu trữ tecmint-14-09-12.tar hiện có, chúng ta có thể sử dụng lệnh sau:

# tar -rvf tecmint-14-09-12.tar xyz.txt

# tar -rvf tecmint-14-09-12.tar php

drwxr-xr-x root/root         0 2012-09-15 02:24:21 home/tecmint/
-rw-r--r-- root/root  15740615 2012-09-15 02:23:42 home/tecmint/
cleanfiles.sh
-rw-r--r-- root/root    863726 2012-09-15 02:23:41 home/tecmint/
openvpn-2.1.4.tar.gz
-rw-r--r-- root/root  21063680 2012-09-15 02:24:21 home/tecmint/
tecmint-14-09-12.tar
-rw-r--r-- root/root   4437600 2012-09-15 02:23:41 home/tecmint/
phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
-rw-r--r-- root/root     12680 2012-09-15 02:23:41 home/tecmint/
rpmforge-release-0.5.2-2.el5.rf.i386.rpm
-rw-r--r-- root/root 0 2012-08-18 19:11:04 xyz.txt
drwxr-xr-x root/root 0 2012-09-15 03:06:08 php/ 
-rw-r--r-- root/root 1751 2012-09-15 03:06:08 php/iframe_ew.php 
-rw-r--r-- root/root 11220 2012-09-15 03:06:08 php/videos_all.php 
-rw-r--r-- root/root 2152 2012-09-15 03:06:08 php/rss.php 
-rw-r--r-- root/root 3021 2012-09-15 03:06:08 php/index.php 
-rw-r--r-- root/root 2554 2012-09-15 03:06:08 php/vendor.php 
-rw-r--r-- root/root 406 2012-09-15 03:06:08 php/video_title.php

Thêm tệp hoặc thư mục vào các tệp lưu trữ tar.gz và tar.bz2

Lệnh tar không có tùy chọn để thêm tệp hoặc thư mục vào một tệp lưu trữ tar.gz hoặc tar.bz2 nén hiện có. Nếu bạn cố gắng thực hiện thao tác này, bạn sẽ nhận được thông báo lỗi sau:

# tar -rvf MyImages-14-09-12.tar.gz xyz.txt

# tar -rvf Phpfiles-org.tar.bz2 xyz.txt

tar: This does not look like a tar archive
tar: Skipping to next header
xyz.txt
tar: Error exit delayed from previous errors

Xác minh tính toàn vẹn của các tệp lưu trữ tar, tar.gz và tar.bz2

Để xác minh tính toàn vẹn của bất kỳ tệp lưu trữ tar hoặc nén nào, chúng ta sử dụng tùy chọn W (verify). Tuy nhiên, lưu ý rằng bạn không thể thực hiện xác minh trên tệp lưu trữ nén (*.tar.gz, *.tar.bz2). Dưới đây là ví dụ về các lệnh tương ứng:

# tar tvfW tecmint-14-09-12.tar

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: VERIFY FAILURE: 30740 invalid headers detected
Verify -rw-r--r-- root/root    863726 2012-09-15 02:23:41 
/home/tecmint/openvpn-2.1.4.tar.gz
Verify -rw-r--r-- root/root  21063680 2012-09-15 02:24:21 
/home/tecmint/tecmint-14-09-12.tar
tar: /home/tecmint/tecmint-14-09-12.tar: Warning: Cannot stat: 
No such file or directory
Verify -rw-r--r-- root/root   4437600 2012-09-15 02:23:41 
home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm
tar: /home/tecmint/phpmyadmin-2.11.11.3-1.el5.rf.noarch.rpm: 
Warning: Cannot stat: No such file or directory
Verify -rw-r--r-- root/root     12680 2012-09-15 02:23:41 
home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
tar: /home/tecmint/rpmforge-release-0.5.2-2.el5.rf.i386.rpm: 
Warning: Cannot stat: No such file or directory
Verify -rw-r--r-- root/root         0 2012-08-18 19:11:04 xyz.txt
Verify drwxr-xr-x root/root         0 2012-09-15 03:06:08 php/

Kiểm tra kích thước tệp Tar

Để kiểm tra kích thước của bất kỳ tệp lưu trữ tar, tar.gz và tar.bz2 nào, bạn có thể sử dụng lệnh sau, lưu ý rằng lệnh trên sẽ hiển thị kích thước của tệp lưu trữ trong đơn vị Kilobytes (KB).

# tar -czf - tecmint-14-09-12.tar | wc -c
12820480

# tar -czf - MyImages-14-09-12.tar.gz | wc -c
112640

# tar -czf - Phpfiles-org.tar.bz2 | wc -c
20480

Loại trừ tệp và thư mục khỏi tệp lưu trữ tar

Để loại trừ các tệp và thư mục cụ thể khi tạo tệp lưu trữ tar.gz, bạn có thể sử dụng lệnh sau với tùy chọn --exclude để loại trừ tệp và thư mục khi tạo tệp lưu trữ tar như sau:

# tar --exclude='file1.txt' -zcvf backup.tar.gz /home/tecmint
# tar --exclude='/home/tecmint/uploads' -zcvf backup.tar.gz /home/tecmint

Trong lệnh trên, chúng ta đã loại trừ tệp 'file1.txt' và thư mục 'uploads' từ thư mục /home/tecmint. Để loại trừ các tệp có phần mở rộng cụ thể (.txt) khi tạo tệp lưu trữ tar, bạn có thể sử dụng lệnh sau:

# tar --exclude='*.txt' -zcvf backup.tar.gz /home/tecmint

Xóa tệp và thư mục khỏi tệp Tar

Lệnh tar sau sẽ xóa một tệp hoặc thư mục khỏi tệp tar đã được tạo trước đó bằng cách sử dụng tùy chọn --delete như sau:

# tar --delete -f backup.tar.gz file1.txt
# tar --delete -f backup.tar.gz '/home/tecmint/uploads'

Giải nén phần mở rộng tệp trong tệp Tar

Lệnh tar sau chỉ sẽ giải nén các tệp có phần mở rộng cụ thể là .png từ tệp lưu trữ tar bằng cách sử dụng tùy chọn --wildcards như sau:

# tar -xvf backup.tar.gz --wildcards '*.png'

Lệnh tar có rất nhiều ứng dụng nhưng chủ yếu là dùng để nén các tệp tin hoặc thư mục. 21 ví dụ ở trên là những ví dụ cơ bản giúp người mới bắt đầu dễ dàng vận dụng, thực hành ngay trên hệ điều hành Linux.

Mọi người cũng tìm kiếm: tar ubuntu, ubuntu tar, tar centos, tar là gì, lệnh tar trong linux.