Nén file (Archive) sử dụng lệnh tar trên Linux

Trước tiên cần phân biệt Arichve và Compress. Archive được hiểu là gom nhiều file, tệp tin lại thành một tệp duy nhất giúp thận tiện cho việc quản lý hoặc di chuyển, truyền file qua môi trường mạng thông qua HTTP hay FTP,… Thông thường archive kèm theo compress để giảm dung lượng file, nên mọi người hay quen thuộc gọi là nén file.

Tiện ích chuẩn dùng để archive file trên hệ điều hành Linux và Unix là tar. Với tar, người dùng có thể tạo được tệp lưu trữ bao gồm file, thư mục, thêm hoặc xóa file, thư mục trong tệp lưu trữ. Thậm chí tar có thể tạo tệp lưu trữ bao gồm cả các tệp hoặc thư mục con của một tệp.

Tạo một tệp lưu trữ – Arichve file trên linux

Cấu trúc của một lệnh tar chuẩn

tar [option] archive-name.tar directory-and-file-names

Giả sử mình đang có một thư mục tên demo-tar, trong thư mục này có các file: file1, file2, file3, file4

hoadev@hoadev-ngn /o/learn-linux> ll
total 0
drwxr-xr-x. 2 root root 74 Mar 18 10:48 demo-tar
hoadev@hoadev-ngn /o/learn-linux> ll demo-tar/
total 0
-rw-r--r--. 1 root root 0 Mar 18 10:48 file1.txt
-rw-r--r--. 1 root root 0 Mar 18 10:48 file2.txt
-rw-r--r--. 1 root root 0 Mar 18 10:48 file3.txt
-rw-r--r--. 1 root root 0 Mar 18 10:48 file4.txt

Để tạo một tệp lưu trữ từ thư mục hiện tại, thực hiện lệnh:

sudo tar -cvf tepnen.tar demo-tar/
[sudo] password for hoadev:
demo-tar/
demo-tar/file1.txt
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt

Trong đó:

-cvf: Các option được thêm vào
tepnen.tar: Tên tệp tin sau khi được archive
demo-tar: Thư mục muốn được archive

Giải thích một số option:

c: Tạo file archive
v: Hiển thị các file và thư mục được đưa vào tệp archive
f: Xác định output sẽ là một file. Trong trường hợp này là file tepnen.tar

Xem nội dung file đã được archive

tar còn được sử dụng để xem danh sách các file, thư mục của tệp archive mà không cần phải giải bung tệp ra. Câu lệnh xem nội dung chuẩn:

hoadev@hoadev-ngn /o/learn-linux> sudo tar -tf tepnen.tar
demo-tar/
demo-tar/file1.txt
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt

Giải thích các option:

-t: Xem nội dung của file archive
-f: Sử dụng mặc định vì f có nghĩa là tar đang thao tác với file.

Giải nén nội dung file archive

Sau khi file được nén và di chuyển đến nơi mới cần sử dụng lệnh để giải nén ra nội dung ban đầu. Để giải nén, cần thêm option x vào câu lệnh. Câu lệnh giải nén chuẩn như sau:

sudo tar -xvf tepnen.tar
demo-tar/
demo-tar/file1.txt
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt

Thêm file vào tệp archive

Để thêm một file vào tệp arichive, sử dụng option r.

Giả sử tệp archive đang có nội dung như sau:

sudo tar -tf tepnen.tar
demo-tar/
demo-tar/file1.txt
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt

Thư mục chứa tệp nén hiện tại

hoadev@hoadev-ngn /o/learn-linux> ll
total 12K
-rw-r--r--. 1 root root   0 Mar 18 11:22 file-add.txt
-rw-r--r--. 1 root root 10K Mar 18 10:57 tepnen.tar

Giờ ta muốn thêm file-add.txt vào tệp nén. Gõ lệnh sau:

sudo tar -rf tepnen.tar file-add.txt

Xem lại nội dung tệp nén sau khi đã thêm file mới vào

sudo tar -tf tepnen.tar
demo-tar/
demo-tar/file1.txt
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt
file-add.txt

Ta thấy file mới tên là file-add.txt đã được thêm vào tệp nén. Tuy nhiên ta lại thấy file-add.txt nằm ngoài, cùng cấp với thư mục demo-tar. Giờ giả sử ta muốn file file-add.txt nằm trong thư mục demo-tar luôn thì giải pháp là phải tạo thư mục demo-tar, sau đó copy file-add.txt vào thư mục demo-tar, rồi thêm thư mục demo-tar vào file nén.

hoadev@hoadev-ngn /o/learn-linux> ll
total 12K
drwxr-xr-x. 2 root root  26 Mar 18 11:33 demo-tar
-rw-r--r--. 1 root root 10K Mar 18 11:23 tepnen.tar
hoadev@hoadev-ngn /o/learn-linux>
hoadev@hoadev-ngn /o/learn-linux> ll demo-tar/
total 0
-rw-r--r--. 1 root root 0 Mar 18 11:33 file-add.txt

Sau đó thêm thư mục demo-tar vào file arichive hiện tại.

sudo tar -rf tepnen.tar demo-tar/file-add.txt

Xem lại nội dung file archive, ta thấy tệp file-add.txt đã nằm đúng chỗ như mong muốn.

hoadev@hoadev-ngn /o/learn-linux> tar -tf tepnen.tar
demo-tar/
demo-tar/file1.txt
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt
demo-tar/file-add.txt

Xóa file ra khỏi tệp archive

Muốn xóa một file ra khỏi archive file, sử dụng option –delete.

Giả sử muốn xóa file demo-tar/file1txt ra khỏi tệp nén hiện tại, dùng lệnh:

sudo tar --delete -f tepnen.tar demo-tar/file1.txt

Kết quả sau khi chạy lệnh:

hoadev@hoadev-ngn /o/learn-linux> tar -tf tepnen.tar
demo-tar/
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt
demo-tar/file-add.txt

Nén file archive

Tất cả các lệnh phía trên chỉ gom nhiều file lại thành một file archive duy nhất mà không sử dụng phương pháp nén để giảm dung lượng file. Để vừa archive vừa nén file, sử dụng thư viện gzip bằng cách thêm option z.

sudo tar -czvf tepnen.tar.gz demo-tar/
demo-tar/
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt
demo-tar/file-add.txt
demo-tar/file1.txt

Khi archive file sử dụng gzip thì khi un-archive cũng phải sử dụng gzip. Câu lệnh khi giải nén như sau:

sudo tar -xzvf tepnen.tar.gz
demo-tar/
demo-tar/file2.txt
demo-tar/file3.txt
demo-tar/file4.txt
demo-tar/file-add.txt
demo-tar/file1.txt

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top