Nghịch với lệnh tar

Nói đến đóng gói, nén, giải nén chắc nhiều người nghĩ ngay đến định dạng/lệnh rar hay zip, hai  định dạng hiện nay tương đối phổ biến trên toàn thế giới. Với vai trò là một người sử dụng phần mềm nguồn mở nói chung cũng như hệ điều hành nguồn mở như linux nói riêng thì tớ vẫn khoái cái anh chàng tar cổ lỗ sĩ của họ nhà *nix hơn là các định dạng khác.

Tar được viết ra nhằm phục vụ nhu cầu sao lưu  dữ liệu lên các cuộn băng từ  trong các hệ thống *nix. Bản thân tar nguyên thủy không đem lại khả năng nén, thu nhỏ dữ liệu mà nó chỉ đóng vai trò như một chiếc hộp để bạn nhét dữ liệu cần sao lưu, lưu trữ vào đó.

Giới thiệu vậy có lẽ đủ rồi, giờ đến phần gõ lệnh:

I/ Nguyên thủy:

1.Với một gói dạng FILENAME.tar, để mở gói đó gõ:

tar xvf FILENAME.tar

Ở đây, các lựa chọn x/v/f được giải thích như sau:

x : tệp tin cần được mở ra.

v: lựa chọn này thông báo cho chương trình tar biết cần phải in ra màn hình những tệp tin được tháo ra khỏi gói.

f: lựa chọn này bắt buộc phải có và sau lựa chọn này luôn là tên của tệp tin cần tháo/mở.

2. Với gói dạng FILENAME.tar như trên, nếu không muốn tháo gói mà chỉ muốn “dòm” xem trong đó có những gì gõ:

tar tvf FILENAME.tar

Ở đây có  lựa chọn mới là t với thông báo cho chương trình tar biết là cần phải liệt kê những tệp tin nằm trong gói đó.

3. Để đóng gói một loạt hoặc đơn giản chỉ là một vài tệp tin vào một gói tar, gõ:

tar cvf PACKAGENAME.tar file1 file2 folder1 folder2

Ở đây, lựa chọn c thông báo cho chương trình tar biết là phải tạo (create) một gói từ các tệp tin là file1 file2 folder1 folder2 … (có thể thêm nhiều tệp tin, thư mục khác vào cùng gói).

II/Máy ép:

Câu hỏi đặt ra bây giờ là : “tar chỉ có vậy thôi ư, chẳng qua chỉ là nhóm, gộp các tệp tin/thư mục lại vào một cái hộp mà chẳng làm chúng nhỏ đi chút nào!!!”

Trả lời: “Với những tệp tin có kích thước cực nhỏ thì việc nén lại cho nhỏ đi cũng chẳng đem lại lợi ích gì mấy, nhưng với những tệp tin, thư mục có kích thước lớn và cần sao lưu, lưu trữ ở thiết bị lưu trữ dung lượng nhỏ hoặc để tải lên internet và chia sẻ thì việc “ép” nhỏ nó lại là một điểu quan trọng”.

Việc nén định dạng tar thường người ta sử dụng kiểu nén của gzip hoặc bzip2 với các tệp tin có đuôi đặc trưng như .tgz, .tar.gz, .tbz[2], .tar.bz2 .

Để sử dụng tính năng “ép” trong tar thì có hai cách:

1. Sử dụng chính hỗ trợ của lệnh tar để “ép” trong quá trình đóng gói:

a. “Ép” bằng bzip2:

tar cjvf PACKAGENAME.tar.bz2 file1 file2 …

như  đã thấy, chỉ cần thêm lựa chọn j khi đóng gói một (hay nhiều) tệp tin/thư mục chúng ta đã có thể sử dụng tiện ích “ép” trong chương trình  tar với khả năng “ép” của bzip2.

b. “Ép” bằng gzip:

tar czvf PACKAGENAME.tar.bz2 file1 file2 …

với lựa chọn z thì gói các tệp tin/thư mục được tạo ra sẽ bị “ép” với kiểu “ép” của gzip.

2. Sử dụng kết hợp lệnh tar và bzip2 / gzip và pipe trong quá trình đóng gói:

a. Kết hợp với bzip2:

tar cvf – file1 file2 folder1 folder2 | bzip2 > PACKAGENAME.tar.bz2

câu lệnh trên gồm có hai phần, phần thứ nhất là thông báo cho tar đóng một gói của các tệp tin là file1, file2, folder1, folder2 và gửi nó qua tệp tin, tệp tin này là stdout của dòng lệnh, như vậy là những thứ được đóng gói sẽ được gửi qua “ống” | tới lệnh bzip2 (máy ép)nằm sau nó và cuối cùng là được “nắn dòng” cho vào tệp tin PACKAGENAME.tar.bz2.

b. Kết hợp với gzip:

tar cvf – file1 file2 folder1 folder2 | gzip > PACKAGENAME.tar.gz

3. Sử dụng tar để tháo gói .tar.gz, .tgz, .tbz[2], .tar.bz2:

Để giải nén các gói trên rất đơn giản, từ những câu lệnh trên ta có thể phát triển cách câu lệnh tháo gói rất đơn giản:

-x: tháo gói.

-v: in thông tin ra màn hình.

-z: gói là gói được “ép” với gzip (.tar.gz, .tgz).

-j: goi là gói được “ép” với bzip2 (.tar.bz2, .tbz[2]).

-f: lựa chọn chỉ đến tên gói cần tháo/đóng gói.

như vậy, giả sử một gói được (bị?) tải từ đâu đó về với tên là FILENAME.tar.gz hoặc .tgz, ta phải dùng lệnh:

tar xzvf FILENAME.tar.gz

III/”Ống” mạng:

Nếu chỉ đơn giản là đóng gói, nén, xả nén thì có lẽ bài viết này sẽ không ra đời vì trên đời còn một đống phụ tùng với GUI đẹp đẽ, để nhấn nhấn, kéo kéo, thả thả… với các định dạng khác nhau làm những công việc trên. Sử dụng lệnh tar có một lợi thế cực lớn khi người sử dụng đòi hỏi phải sao lưu, chuyển các tệp tin, thư mục qua lại giữa các máy sử dụng *nix với hỗ trợ ssh, chỉ cần với một dòng lệnh tar, người ta đã có thể copy cả một thư mục, hệ  thống thư mục, tệp tin từ một máy này qua máy khác mà chẳng phải nhọc công nghĩ ngợi gì thêm.

1. Đường rộng:

Nếu đường truyền/băng thông giữa hai máy cần truyền dữ liệu là rất lớn thì ta có thể không cần nén dữ liệu trong quá trình truyền mà chỉ cần đơn thuần đóng gói và nhét nó vào “ống” mạng:

tar cvf – file1 file2 folder1 folder2 foobar | ssh username@host tar xvf

Phần đầu của lệnh thì đã được giải thích tương đối tỉ mỉ trong máy ép/2.a, phần sau với “ống” mạng được giải thích như sau, dữ liệu tại stdout () sẽ được truyền tới một “ống” mạng là ssh tới host, ở đầu kia của ống host người ta chạy tiếp lệnh tar xvf với thông báo là mở hết tất cả các dữ liệu được truyền qua “ống”.

2. Đường hẹp:

Nếu đường truyền hạn chế về băng thông/tốc độ, người ta có thể kết hợp việc “ép” dữ liệu trong quá trình gửi qua “ống” mạng với :

a.  Nén kiểu bzip2:

tar cjvffile1 file2 folder1 folder2 foobar | ssh username@host tar xjvf

b. Nén kiểu gzip:

tar czvffile1 file2 folder1 folder2 foobar | ssh username@host tar xzvf

IV/Kết:

Trên đây chỉ là một số cách sử dụng lệnh tar cơ bản trên các hệ thống *nix, để tìm hiểu cặn kẽ hơn thì việc đọc manpage của lệnh tar cũng đem lại lợi ích đáng kể😉. Qua một số cách sử dụng lệnh trên, chúng ta có thể phát triển tiếp bằng cách tìm hiểu viết một(vài) script thực hiện việc sao lưu dữ liệu trong hệ thống tới một nơi nằm trong/ngoài hệ thống.


Một phản hồi to “Nghịch với lệnh tar”

  1. Sang sắc Says:

    Add blog iêm đi bác.


Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: