Trong thế giới của Linux, việc quản lý và sao lưu file là một trong những kỹ năng nền tảng mà bất kỳ người dùng nào cũng cần nắm vững. Đây là thao tác quan trọng, có nhiều ứng dụng thực tế từ việc sao lưu dữ liệu website, di chuyển dự án giữa các máy chủ, đến việc đóng gói mã nguồn để chia sẻ. Tuy nhiên, nhiều người dùng mới thường cảm thấy bối rối khi lần đầu tiếp xúc với các file lưu trữ có đuôi .tar hay .tar.gz. Họ không biết bắt đầu từ đâu và làm thế nào để sử dụng chúng một cách hiệu quả.
Để giải quyết vấn đề này, Linux cung cấp một công cụ cực kỳ mạnh mẽ và linh hoạt: lệnh tar. Đây không chỉ là một tiện ích đơn thuần, mà là “người hùng thầm lặng” giúp bạn tạo, đóng gói và giải nén các file lưu trữ một cách dễ dàng. Trong bài viết này, chúng ta sẽ cùng nhau khám phá từ A-Z về lệnh tar, từ khái niệm cơ bản, cách sử dụng, các tùy chọn phổ biến, cho đến những ví dụ thực tế và mẹo hay để bạn có thể làm chủ công cụ này.
Tìm hiểu về lệnh tar và công dụng trên Linux
Để bắt đầu, hãy cùng làm rõ khái niệm và vai trò của lệnh tar trên hệ điều hành Linux là gì. Hiểu rõ bản chất sẽ giúp bạn sử dụng công cụ này một cách tự tin và chính xác hơn.
Lệnh tar là gì?
tar là viết tắt của “Tape Archive” (Lưu trữ trên băng từ). Tên gọi này bắt nguồn từ thời kỳ đầu của máy tính, khi các bản sao lưu dữ liệu thường được lưu trữ trên băng từ. Mặc dù ngày nay chúng ta không còn sử dụng băng từ rộng rãi, cái tên tar vẫn được giữ lại và trở thành một trong những lệnh phổ biến nhất trên Linux.
Về nguyên lý, lệnh tar hoạt động bằng cách gom nhiều file và thư mục lại với nhau thành một file lưu trữ duy nhất, thường được gọi là “tarball” hay “archive”. Điều quan trọng cần nhớ là bản thân tar chỉ thực hiện việc đóng gói (archiving), chứ không nén (compressing) dữ liệu. Nó giống như việc bạn cho tất cả đồ đạc vào một chiếc hộp lớn, chứ chưa hút chân không để chiếc hộp nhỏ lại.
Vai trò chính của tar trong Linux là tạo ra các bản sao lưu (backup) và di chuyển dữ liệu một cách thuận tiện. Thay vì phải sao chép hàng trăm file riêng lẻ, bạn chỉ cần làm việc với một file duy nhất, giúp tiết kiệm thời gian và giảm thiểu rủi ro thất lạc dữ liệu.

Các công dụng chính của lệnh tar
Lệnh tar có ba công dụng chính mà bạn sẽ thường xuyên sử dụng trong công việc hàng ngày với Linux.
Đầu tiên là tạo file lưu trữ (archive). Đây là chức năng cơ bản nhất, cho phép bạn đóng gói một hoặc nhiều file và thư mục vào một file .tar duy nhất. Thao tác này cực kỳ hữu ích khi bạn muốn sao lưu toàn bộ thư mục dự án hoặc website của mình.
Công dụng thứ hai là giải nén và xem nội dung lưu trữ. Sau khi đã có file archive, bạn có thể dùng tar để giải nén (extract) toàn bộ nội dung ra cấu trúc thư mục và file như ban đầu. Ngoài ra, bạn còn có thể xem danh sách các file bên trong mà không cần phải giải nén, giúp kiểm tra nhanh nội dung của bản sao lưu.
Cuối cùng, tar thường được kết hợp với các công cụ nén khác như gzip hoặc bzip2. Bằng cách kết hợp này, bạn có thể vừa đóng gói vừa nén file trong cùng một lệnh, tạo ra các file có đuôi .tar.gz hoặc .tar.bz2. Việc này giúp giảm đáng kể dung lượng lưu trữ, tiết kiệm không gian đĩa và tăng tốc độ truyền file qua mạng.
Cách sử dụng lệnh tar để tạo file lưu trữ
Sau khi đã hiểu rõ tar là gì, chúng ta hãy đi vào phần thực hành: làm thế nào để tạo ra một file lưu trữ. Quá trình này khá đơn giản khi bạn đã nắm được cú pháp và các tham số cơ bản.
Cú pháp cơ bản để tạo file tar
Để tạo một file .tar đơn giản, bạn sử dụng cú pháp chung như sau:
tar -cvf ten_file_archive.tar /duong/dan/toi/file_hoac_thu_muc
Trong đó, các tham số có ý nghĩa như sau:
-c (create): Đây là tùy chọn quan trọng nhất, báo cho tar biết rằng bạn muốn tạo một archive mới.
-v (verbose): Tùy chọn này giúp hiển thị chi tiết quá trình thực thi lệnh. tar sẽ liệt kê từng file mà nó đang thêm vào archive, giúp bạn dễ dàng theo dõi tiến trình.
-f (file): Tùy chọn này cho phép bạn chỉ định tên của file archive sẽ được tạo ra. Tên file này phải được đặt ngay sau tùy chọn -f.
Ví dụ, để đóng gói một thư mục có tên du-an-1 thành một file backup.tar, bạn sẽ chạy lệnh:
tar -cvf backup.tar du-an-1
Sau khi lệnh thực thi, bạn sẽ thấy một file mới tên là backup.tar xuất hiện trong thư mục hiện tại.

Tạo file lưu trữ kèm nén gzip, bzip2
Như đã đề cập, tar chỉ đóng gói chứ không nén. Để tiết kiệm dung lượng, bạn nên kết hợp tar với các công cụ nén. Hai công cụ phổ biến nhất là gzip và bzip2.
Để tạo file lưu trữ và nén bằng gzip (tạo ra file .tar.gz hoặc .tgz), bạn chỉ cần thêm tùy chọn -z vào lệnh:
tar -czvf ten_file_archive.tar.gz /duong/dan/toi/file_hoac_thu_muc
Ví dụ, để nén thư mục du-an-1 thành file backup.tar.gz:
tar -czvf backup.tar.gz du-an-1
Tương tự, để sử dụng bzip2 (tạo ra file .tar.bz2), bạn dùng tùy chọn -j. bzip2 thường cho tỷ lệ nén tốt hơn gzip nhưng tốn nhiều thời gian hơn.
tar -cjvf ten_file_archive.tar.bz2 /duong/dan/toi/file_hoac_thu_muc
Ví dụ:
tar -cjvf backup.tar.bz2 du-an-1
Lợi ích của việc nén là rất rõ ràng: file archive của bạn sẽ có dung lượng nhỏ hơn đáng kể. Điều này đặc biệt quan trọng khi bạn cần lưu trữ nhiều bản sao lưu hoặc gửi file qua mạng Internet với băng thông hạn chế.
Cách giải nén các file lưu trữ với lệnh tar
Một khi đã có file lưu trữ, việc tiếp theo bạn cần biết là làm thế nào để “mở hộp” và lấy lại dữ liệu bên trong. Thao tác giải nén cũng rất đơn giản với lệnh tar.

Mở và giải nén file tar thường
Để giải nén một file .tar không nén, bạn sử dụng cú pháp với tùy chọn -x (extract).
Cú pháp chung là:
tar -xvf ten_file_archive.tar
Hãy phân tích các tham số:
-x (extract): Đây là tùy chọn chính, yêu cầu tar giải nén nội dung từ file archive.
-v (verbose): Tương tự như khi tạo file, tùy chọn này sẽ hiển thị danh sách các file được giải nén.
-f (file): Dùng để chỉ định tên file archive mà bạn muốn giải nén.
Ví dụ, để giải nén file backup.tar mà chúng ta đã tạo trước đó, bạn chạy lệnh:
tar -xvf backup.tar
Lệnh này sẽ tạo lại thư mục du-an-1 cùng với toàn bộ cấu trúc file và thư mục con bên trong nó, ngay tại vị trí bạn đang chạy lệnh.
Giải nén file tar.gz và tar.bz2
Đối với các file archive đã được nén, bạn chỉ cần thêm tùy chọn nén tương ứng vào lệnh giải nén.
Để giải nén file .tar.gz, bạn thêm tùy chọn -z:
tar -xzvf ten_file_archive.tar.gz
Ví dụ, để giải nén file backup.tar.gz:
tar -xzvf backup.tar.gz
Để giải nén file .tar.bz2, bạn thêm tùy chọn -j:
tar -xjvf ten_file_archive.tar.bz2
Ví dụ, để giải nén file backup.tar.bz2:
tar -xjvf backup.tar.bz2
Một lưu ý quan trọng là các phiên bản tar hiện đại thường đủ thông minh để tự động nhận diện định dạng nén mà không cần bạn chỉ định -z hay -j. Tuy nhiên, việc cung cấp rõ ràng các tùy chọn này được xem là một thói quen tốt, giúp lệnh của bạn rõ ràng hơn và đảm bảo tương thích trên các hệ thống cũ.
Các tùy chọn phổ biến khi sử dụng lệnh tar
Lệnh tar đi kèm với rất nhiều tùy chọn, cho phép bạn tùy chỉnh hoạt động của nó theo nhiều cách khác nhau. Nắm vững các tùy chọn này sẽ giúp bạn làm việc hiệu quả hơn rất nhiều.

Tổng hợp các tùy chọn thường dùng
Dưới đây là danh sách các tùy chọn phổ biến nhất mà bạn nên ghi nhớ, được nhóm theo chức năng chính:
Các tùy chọn chính (chỉ chọn một trong số này):
-c (create): Tạo một file archive mới.
-x (extract): Giải nén file từ một archive.
-t (list): Liệt kê danh sách các file và thư mục bên trong archive mà không giải nén.
-r (append): Thêm file vào cuối một archive đã có (không dùng được với archive đã nén).
-u (update): Cập nhật các file trong archive nếu phiên bản trên đĩa mới hơn (không dùng được với archive đã nén).
-d (diff): So sánh nội dung của archive với các file trên đĩa.
Các tùy chọn bổ trợ (có thể kết hợp):
-f (file): Chỉ định tên file archive. Đây là tùy chọn bắt buộc trong hầu hết các trường hợp.
-v (verbose): Hiển thị chi tiết quá trình xử lý. Rất hữu ích để theo dõi.
-z (gzip): Nén hoặc giải nén bằng gzip (cho file .tar.gz).
-j (bzip2): Nén hoặc giải nén bằng bzip2 (cho file .tar.bz2).
-C (directory): Thay đổi thư mục đích khi giải nén. Ví dụ: tar -xvf archive.tar -C /duong/dan/moi.
Kết hợp các tùy chọn để tăng hiệu quả công việc
Sức mạnh thực sự của tar nằm ở khả năng kết hợp các tùy chọn. Ví dụ, thay vì nhớ tar -c -v -f, bạn có thể viết gọn thành tar -cvf.
Hãy xem một vài ví dụ kết hợp thực tế:
- Tạo bản sao lưu nén và xem tiến trình:
tar -czvf backup_$(date +%F).tar.gz /path/to/project. Lệnh này không chỉ tạo archive nén mà còn chèn ngày tháng hiện tại vào tên file, rất tiện lợi cho việc quản lý phiên bản.
- Liệt kê nội dung của file nén:
tar -tzvf backup.tar.gz. Tùy chọn t kết hợp với z và v cho phép bạn xem nhanh các file bên trong một archive nén mà không cần giải nén toàn bộ.
- Giải nén vào một thư mục khác:
tar -xzvf website.tar.gz -C /var/www/html/. Tùy chọn -C cực kỳ hữu ích khi bạn muốn giải nén dữ liệu vào một vị trí cụ thể thay vì thư mục hiện tại.
Lời khuyên khi chọn tham số là hãy bắt đầu với những tổ hợp phổ biến như -cvf (tạo), -xvf (giải nén), -czvf (tạo và nén gzip), -xzvf (giải nén gzip). Khi đã quen thuộc, bạn có thể khám phá thêm các tùy chọn nâng cao như -r, -u hoặc --exclude để loại trừ các file không mong muốn khỏi archive.
Ví dụ minh họa thực tế với lệnh tar
Lý thuyết sẽ trở nên dễ hiểu hơn rất nhiều khi được áp dụng vào các kịch bản thực tế. Hãy cùng xem cách tar được sử dụng trong một dự án cụ thể.

Tạo file lưu trữ dự án bằng tar
Giả sử bạn là một lập trình viên và vừa hoàn thành một dự án website nhỏ. Cấu trúc thư mục của bạn như sau:
my-awesome-project/
├── index.html
├── css/
│ └── style.css
├── js/
│ └── main.js
└── images/
└── logo.png
Bây giờ, bạn muốn tạo một bản sao lưu nén của toàn bộ dự án này để gửi cho khách hàng hoặc lưu trữ.
Bạn sẽ di chuyển vào thư mục chứa my-awesome-project và thực hiện lệnh sau:
tar -czvf my-awesome-project-backup.tar.gz my-awesome-project/
Khi bạn chạy lệnh này với tùy chọn -v, output trên màn hình sẽ trông giống như sau:
my-awesome-project/
my-awesome-project/index.html
my-awesome-project/css/
my-awesome-project/css/style.css
my-awesome-project/js/
my-awesome-project/js/main.js
my-awesome-project/images/
my-awesome-project/images/logo.png
Output này xác nhận rằng tar đã duyệt qua tất cả các file và thư mục con, sau đó đóng gói và nén chúng vào file my-awesome-project-backup.tar.gz.
Giải nén và kiểm tra nội dung archive
Một tuần sau, bạn cần khôi phục lại dự án này trên một máy chủ mới. Bạn tải file my-awesome-project-backup.tar.gz lên máy chủ và cần giải nén nó.
Đầu tiên, bạn có thể tạo một thư mục mới để chứa dự án đã giải nén:
mkdir restore_project
cd restore_project
Bây giờ, bạn thực hiện lệnh giải nén. Giả sử file backup nằm ở thư mục ~/backups:
tar -xzvf ~/backups/my-awesome-project-backup.tar.gz
Lệnh này sẽ giải nén toàn bộ nội dung vào thư mục restore_project. Để kiểm tra, bạn có thể dùng lệnh ls -R:
ls -R
Output sẽ hiển thị cấu trúc thư mục y hệt như ban đầu, xác nhận rằng quá trình giải nén đã thành công:
.
my-awesome-project
./my-awesome-project:
css images index.html js
./my-awesome-project/css:
style.css
./my-awesome-project/images:
logo.png
./my-awesome-project/js:
main.js
Qua ví dụ này, bạn có thể thấy tar giúp việc đóng gói và phục hồi dữ liệu trở nên đơn giản và đáng tin cậy như thế nào.
Quản lý và thao tác với các file lưu trữ trên Linux
Ngoài việc tạo và giải nén, tar còn cung cấp các công cụ hữu ích để quản lý và tương tác với các file archive mà không cần phải giải nén hoàn toàn.

Xem danh sách file trong archive
Đây là một trong những tính năng hữu ích nhất nhưng lại ít được biết đến. Trước khi giải nén một file archive lớn, bạn nên kiểm tra nội dung bên trong nó. Việc này giúp bạn chắc chắn rằng file archive chứa đúng dữ liệu bạn cần và tránh ghi đè nhầm các file quan trọng trong thư mục hiện tại.
Để liệt kê nội dung của một archive, bạn sử dụng tùy chọn -t (list). Đối với file .tar: tar -tvf ten_archive.tar Đối với file .tar.gz: tar -tzvf ten_archive.tar.gz Đối với file .tar.bz2: tar -tjvf ten_archive.tar.bz2
Ví dụ, để xem nội dung file my-awesome-project-backup.tar.gz đã tạo ở trên:
tar -tzvf my-awesome-project-backup.tar.gz
Output sẽ liệt kê chi tiết các file, quyền truy cập, chủ sở hữu, kích thước và ngày sửa đổi, giống như khi bạn dùng lệnh ls -l. Thao tác này cực kỳ nhanh chóng và không tốn nhiều tài nguyên hệ thống.
Thêm hoặc cập nhật file trong archive tar
tar cũng cho phép bạn sửa đổi một archive đã tồn tại bằng cách thêm file mới hoặc cập nhật các file đã có.
Để thêm một file mới vào cuối archive, bạn dùng tùy chọn -r (append). Ví dụ, bạn vừa tạo thêm file readme.md và muốn thêm nó vào file backup.tar (chưa nén):
tar -rvf backup.tar readme.md
Để cập nhật các file trong archive nếu phiên bản trên đĩa mới hơn, bạn dùng tùy chọn -u (update). tar sẽ so sánh ngày sửa đổi của các file trên đĩa với các file trong archive và chỉ cập nhật những file nào mới hơn.
tar -uvf backup.tar my-awesome-project/
Lưu ý quan trọng: Các tùy chọn -r và -u không hoạt động trên các file archive đã được nén (như .tar.gz hoặc .tar.bz2). Nếu bạn cố gắng thực hiện, tar sẽ báo lỗi. Để cập nhật một archive đã nén, cách duy nhất là giải nén nó, thực hiện thay đổi, sau đó tạo lại archive nén từ đầu.
Các vấn đề thường gặp & Cách khắc phục
Trong quá trình sử dụng tar, đôi khi bạn sẽ gặp phải một số lỗi. Dưới đây là những vấn đề phổ biến nhất và cách để bạn xử lý chúng một cách nhanh chóng.

Lỗi không tìm thấy file khi dùng tar
Đây là lỗi phổ biến nhất, đặc biệt với người mới. Bạn chạy lệnh tar và nhận được thông báo như: tar: ten-file: Cannot stat: No such file or directory.
Nguyên nhân chính thường là do gõ sai tên file hoặc đường dẫn. Hệ điều hành Linux phân biệt chữ hoa và chữ thường, vì vậy Backup.tar và backup.tar là hai file hoàn toàn khác nhau. Một nguyên nhân khác là bạn đang chạy lệnh từ một thư mục không chứa file hoặc thư mục bạn muốn thao tác.
Cách khắc phục:
- Kiểm tra chính tả: Hãy chắc chắn rằng bạn đã gõ đúng tuyệt đối tên file và đường dẫn.
- Sử dụng lệnh
ls: Trước khi chạy lệnh tar, hãy dùng ls để kiểm tra xem file hoặc thư mục có thực sự tồn tại ở vị trí đó không.
- Sử dụng đường dẫn tuyệt đối: Nếu không chắc chắn, hãy cung cấp đường dẫn đầy đủ bắt đầu từ thư mục gốc (
/), ví dụ: tar -czvf /home/user/backup.tar.gz /var/www/html.
File lưu trữ bị hỏng hoặc không giải nén được
Đôi khi, bạn có thể gặp phải tình huống file archive không thể giải nén được và nhận các thông báo lỗi như tar: This does not look like a tar archive hoặc gzip: stdin: unexpected end of file.
Nguyên nhân có thể do file bị tải xuống không hoàn chỉnh, lỗi trong quá trình sao chép, hoặc lỗi trên ổ đĩa lưu trữ. Dấu hiệu nhận biết là quá trình giải nén dừng lại đột ngột hoặc báo lỗi về định dạng không hợp lệ.
Giải pháp bước đầu:
- Kiểm tra dung lượng file: So sánh dung lượng file archive của bạn với dung lượng file gốc (nếu có thể). Một file có dung lượng 0KB chắc chắn đã bị hỏng.
- Tải lại file: Nếu bạn tải file từ trên mạng, hãy thử tải lại lần nữa. Đây là nguyên nhân phổ biến nhất.
- Kiểm tra ổ đĩa: Sử dụng các công cụ kiểm tra sức khỏe ổ đĩa của hệ thống để đảm bảo không có bad sector nào ảnh hưởng đến file của bạn.
- Thử giải nén từng phần: Đôi khi, bạn có thể cứu được một phần dữ liệu từ file archive bị hỏng bằng các công cụ khôi phục chuyên dụng, nhưng đây là một quá trình phức tạp và không đảm bảo thành công. Cách tốt nhất vẫn là luôn có một bản sao lưu dự phòng.
Best Practices khi sử dụng lệnh tar
Để trở thành một người dùng tar thành thạo và tránh các sai sót không đáng có, hãy tuân thủ một vài nguyên tắc thực hành tốt nhất sau đây.

- Luôn kiểm tra tên file và đường dẫn cẩn thận: Đây là quy tắc vàng. Một lỗi nhỏ trong tên file có thể dẫn đến việc ghi đè dữ liệu quan trọng hoặc không tìm thấy file. Hãy tạo thói quen kiểm tra lại bằng
ls trước khi nhấn Enter.
- Ưu tiên sử dụng tham số verbose (
-v): Tùy chọn -v cung cấp phản hồi trực quan về những gì tar đang làm. Việc này không chỉ giúp bạn theo dõi tiến trình mà còn có thể phát hiện sớm các vấn đề, ví dụ như một file nào đó bị bỏ qua do quyền truy cập.
- Không nén file quan trọng mà không có bản backup: Trước khi thực hiện các thao tác sửa đổi hoặc tạo archive, đặc biệt là với dữ liệu quan trọng, hãy chắc chắn rằng bạn đã có một bản sao lưu ở nơi khác. An toàn là trên hết.
- Sử dụng kết hợp với các luồng dữ liệu (pipes) hiệu quả:
tar có thể kết hợp mạnh mẽ với các lệnh khác thông qua pipe (|). Ví dụ, bạn có thể sao lưu và chuyển dữ liệu qua SSH tới một máy chủ khác chỉ bằng một dòng lệnh duy nhất, mà không cần tạo file trung gian trên đĩa.
- Luôn thử nghiệm trên file nhỏ trước khi thao tác trên dữ liệu lớn: Nếu bạn không chắc chắn về một tổ hợp tùy chọn phức tạp, hãy tạo một vài file và thư mục giả để thử nghiệm. Việc này giúp bạn hiểu rõ lệnh sẽ hoạt động như thế nào trước khi áp dụng lên hàng Gigabyte dữ liệu quan trọng.

Kết luận
Qua bài viết chi tiết này, hy vọng bạn đã có một cái nhìn toàn diện và sâu sắc về lệnh tar trong Linux. Từ một công cụ có vẻ phức tạp, tar thực chất lại là một người bạn đồng hành đáng tin cậy, giúp bạn quản lý, sao lưu và di chuyển dữ liệu một cách hiệu quả và an toàn. Sức mạnh của nó không chỉ nằm ở việc đóng gói và giải nén, mà còn ở sự linh hoạt thông qua vô số tùy chọn và khả năng kết hợp với các lệnh khác.
Nắm vững tar là một kỹ năng thiết yếu cho bất kỳ ai làm việc thường xuyên với môi trường Linux, từ quản trị viên hệ thống, lập trình viên cho đến những người dùng phổ thông. Nó giúp bạn tự tin hơn trong việc bảo vệ dữ liệu và tự động hóa các quy trình sao lưu.
Bây giờ, đừng ngần ngại! Bước tiếp theo dành cho bạn chính là mở terminal lên và thực hành ngay. Hãy thử tạo một file archive từ một thư mục bất kỳ trên máy, xem nội dung của nó, rồi giải nén ra một vị trí khác. Việc thực hành thường xuyên sẽ giúp bạn làm quen và ghi nhớ các thao tác một cách nhanh chóng. Chúc bạn thành công!
