15 lệnh Tar nên thử trong Linux

Đôi khi người dùng cần đóng gói nhiều file và/hoặc thư mục vào một file duy nhất. Sẽ dễ dàng hơn nếu chuyển một file qua mạng và thậm chí là tất cả các file trong USB (nhưng càng nhiều file thì việc chuyển sẽ càng bị chậm). Trên các hệ điều hành như Windows, điều này thường được thực hiện bằng cách lưu trữ vào các file .zip hoặc .rar. Trên các hệ điều hành *nix, chẳng hạn như Linux, tiện ích thường dùng là tar. Tên của lệnh này xuất phát từ Tape ARchive, vì ban đầu nó được thiết kế để sao lưu dữ liệu trên băng từ. Ngày nay, nó vẫn có thể được sử dụng cho mục đích này, nhưng trong hầu hết các trường hợp, nó chỉ đơn giản là phương pháp tạo ra “tarball”. Mục đích của tarball là để tạo điều kiện upload, download và di chuyển dữ liệu hoặc giữ bản sao lưu.

1. Tham khảo hướng dẫn sử dụng tar

Mỗi lệnh trong Linux có một trang hướng dẫn. Bạn có thể tham khảo hướng dẫn sử dụng tar bằng cách nhập lệnh sau vào terminal:

man tar

Hướng dẫn sử dụng

Xem qua phần nội dung bằng cách sử dụng các phím mũi tên, PAGE UP và PAGE DOWN. Nhấn q để thoát khỏi hướng dẫn.

2. Tạo thư mục Tarball

Tạo thư mục với 9 tệp trống để có thể kiểm tra các lệnh tar:

mkdir $HOME/test9 && touch $HOME/test9/{1..9}

Tạo Tarball

Bây giờ chuyển sang thư mục chính:

cd

Để chuyển nội dung của một thư mục đến một file tar:

tar -cvf test.tar test9
  • c - Là viết tắt của “create”
  • v - Verbose, xuất ra file hiện đang được thêm vào kho lưu trữ; hữu ích cho các tác vụ cần nhiều thời gian và kiểm tra được tiến độ
  • f - Thông báo cho tiện ích tạo file tar, với tên được chỉ định là test.tar

3. Thêm nội dung vào một Tarball hiện có

Tạo một thư mục khác với các file trống có tên được sắp xếp từ a đến z:

mkdir $HOME/test-az && touch $HOME/test-az/{a..z}

Thêm nội dung

Bây giờ, thêm nó vào kho lưu trữ tar đã có (tham số r):

tar -rvf test.tar test-az

Nếu mở test.tar trong trình quản lý lưu trữ đồ họa, bạn sẽ thấy nội dung sau.

Mở test.tar

4. Danh sách nội dung của file tar

Sử dụng flag -t để liệt kê nội dung của file tar.

tar -tf test.tar

5. Trích xuất nội dung từ Tarball

Nội dung sẽ được trích xuất trong thư mục hiện tại. Tạo một thư mục mới và sau đó chuyển nội dung sang đó:

mkdir $HOME/test-extract && cd $HOME/test-extract

Bây giờ giải nén test.tar trong thư mục hiện hành:

tar -xvf $HOME/test.tar

Trích xuất nội dung

6. Tạo Tarball nén (gzip)

Nếu có ý định chuyển file tar qua mạng, làm dung lượng của nó nhỏ hơn sẽ là ý tưởng tuyệt vời để tăng tốc độ truyền. Thay đổi trở lại thư mục chính.

cd

Và tạo một file tar nén:

tar -cvzf test.tar.gz test9

Như có thể thấy, sự khác biệt duy nhất là tham số z được thêm vào nhằm hướng dẫn tar sử dụng gzip để nén file.

Tạo Tarball nén

7. Tạo Tarball nén nhỏ hơn (bzip)

Thay vì tham số z, người dùng có thể sử dụng j để nén bằng bzip.

tar -cvjf test.tar.bz test9

Điều này sẽ tiếp tục giảm kích thước file nhưng mất nhiều thời gian hơn để nén và giải nén.

8. Trích xuất một file hoặc thư mục

Chỉ cần thêm tên chính xác của file hoặc thư mục, như nó xuất hiện trong kho lưu trữ tar:

tar -xvf test.tar test9/7

Điều này chỉ trích xuất file test9/7.

9. Chỉ trích xuất các file/thư mục phù hợp với một mẫu

Nếu bạn muốn trích xuất tất cả các file kết thúc bằng phần mở rộng .jpg:

tar -xvf test.tar --wildcards '*.jpg'

10. Bảo toàn các quyền truy cập

Quyền truy cập không quan trọng khi tạo tarball từ tài liệu, hình ảnh và các file media tương tự. Nhưng nếu đang sao lưu hệ thống, bạn có thể thêm tham số p để duy trì quyền truy cập file:

tar -cvpf test-allow.tar test9

11. Xóa tệp hoặc thư mục khỏi Tarball

Chỉ hoạt động trên các file tar không nén.

tar -f test.tar --delete test-az

Thao tác này sẽ xóa thư mục test-az khỏi tarball, bao gồm các file chứa trong đó:

tar f test.tar --delete test-az/z sẽ chỉ xóa file test test-az/z.

12. Loại trừ các file hoặc thư mục khỏi bị thêm vào Tarball

tar -cvf test-exclude.tar --exclude test9/9 test9

Loại trừ file

Như có thể thấy, file 9 đã bị loại khỏi kho lưu trữ tar. Có thể thêm nhiều tham số loại trừ:

tar cvf test-exclude.tar --exclude test9/9 --exclude test9/8 test9

13. Ở trong một hệ thống file

--one-file-system có thể được thêm vào trong một lệnh như:

tar -cvpzf backup.tar.gz --one-file-system /

Điều này sẽ sao lưu hệ thống file gốc, ngoại trừ các hệ thống file khác mà bạn có thể đã mount trong /home, /mnt, /media, /proc, v.v...

14. Bảo toàn các thuộc tính mở rộng

Bên cạnh quyền truy cập file, một số bản phân phối Linux cũng có các thuộc tính file mở rộng. Để bảo toàn tất cả chúng, hãy thêm các tham số sau: --acls --selinux --xattrs.

Lệnh ví dụ:

tar -cvpzf backup.tar.gz --one-file-system --acls --selinux --xattrs /

15. Tạo thư mục mới cho các file được giải nén

Thông thường, tar sẽ trích xuất vào thư mục hiện tại của người dùng. Có thể sử dụng mkdir new_directorycd new_directory trước khi sử dụng tar, nếu thư mục muốn giải nén không tồn tại. Nhưng hướng dẫn tar làm mọi thứ cho bạn sẽ tốt hơn:

tar -xvf test.tar --one-top-level=new_directory

Đây là những lệnh tar được sử dụng phổ biến nhất. Nhưng tiện ích này rất linh hoạt và có thể được sử dụng theo nhiều cách khác nhau. Nếu không thích đọc hướng dẫn trong terminal, có thể tìm phiên bản HTML của hướng dẫn tar để dễ đọc hơn.

Xem thêm:

Thứ Sáu, 25/01/2019 16:24
51 👨 708
0 Bình luận
Sắp xếp theo