Đăng Nhập

Vui lòng khai báo chính xác tên truy cập và mật khẩu!

Quên mật khẩu?

Cơ bản về lệnh Tar trên Linux

Share
    Xếp
    avatar

    Giới tính : Nữ

    Tuổi : 25

    Đến từ : HCM

    Ngày Tham gia : 13/06/2011

    Tổng số bài gửi : 380

    #1

     on Sun Oct 02, 2011 11:08 pm

    Trước tiên ta cần biết lệnh Tar là gì :
    tar (Tape ARchive) là công cụ được sử dụng để gom 1 nhóm file(s) (folder là 1 loại file đặc biệt) thành 1 file duy nhất - file này được gọi là archive, hoặc để bung (xả) các file trong archive. Người dùng Linux thì chắc chắn phải biết dùng lệnh Tar. Trong bài này mình sẽ trình bày 1 vài option thông dụng của lệnh tar, và mỗi option sẽ có đi kèm với ví dụ cụ thể.

    Những điều cần lưu ý :
    (Có thể mới vào đọc chưa hiểu gì, cứ biết vậy trước đã, đọc các ví dụ bên dưới rồi sẽ hiểu các lưu ý này)
    _ Khi thao tác với file lưu trữ (archive) thì bắt buộc phải có option -f
    _ Mặc định trong file lưu trữ không chứa đường dẫn tuyệt đối , nên sẽ tự động bỏ dấu “/” ở đầu mỗi tên file
    Removing leading `/' from member names
    Nếu muốn giữ địa chỉ tuyệt đối thì thêm option –P . Khi giải nén nếu có –P thì sẽ giải nén theo địa chỉ tuyệt đối , nếu không có thì sẽ giải nén theo địa chỉ tương đối
    _Khi tạo file lưu trữ mới trùng tên thì chương trình sẽ tự động overwrite file lưu trữ cũ mà không cần hỏi , để không overwrite thì thêm option –k . Thêm option –r thì các file mới sẽ được ghi thêm vào cuối file lưu trữ cũ. Thêm option --backup để tạo file dự phòng file lưu trữ cũ khi có overwrite _ Mặc định tar sẽ lưu trữ đệ quy vào sâu bên trong các thư mục con , để không đệ quy thì thêm option --no-recursion(tùy phiên bản , có hoặc không) , ngược lại thêm option --recursion
    _ Mặc định lệnh tar sẽ giữ nguyên permission của các file (nghĩa là không cần option –p) , nếu muốn thay đổi permission thì thêm option --no-same-permissions


    Cơ bản về lệnh Tar

    Đầu tiên là phải biết ý nghĩa 1 vài ký tự trong câu lệnh trước đã

    -> dấu "/" : current directory, đang đứng ở root directory / (giống như C:/ bên Windows vậy)
    -> dấu "#" : đang thực thi với quyền root (tương tự Administrator bên Windows)
    -> lệnh "ls" : list - liệt kê các file/folder tại thư mục hiện hành (tương tự lệnh dir bên Windows)

    *** tạo file lưu trữ-c
    # tar –cf home.tar home
    -> tạo file home.tar chứa toàn bộ thư mục homes

    *** tạo file lưu trữ với nhiều đối số
    # tar –cf abc.tar home root etc error.log
    -> tạo file lưu trữ abc.tar với các đối số là thư mục home , etc , root và file error.log

    *** tạo file lưu trữ chỉ lấy các đối số nằm trên current directory


    -> lệnh "ls -R" : liệt kê tất cả các file từ folder cha đến con (-R : recursion - đệ quy)
    Ở thư mục hiện hành có các file là a, b, c và folder A, B, C. Trong folder A có file d, e, f và folder D


    -> dấu "*" : tất cả
    -> option --no-recursion : không đệ quy
    -> tar -tf test.tar : xem nội dung file test.tar vừa tạo ở trên. Kết quả xuất ra màn hình cho biết file test.tar chứa file a, b, c và 3 folder rỗng là A, B, C

    *** bung (extract) file lưu trữ -x
    # tar –xf home.tar

    -> extract file home.tar tại current directory
    # tar –xvf home.tar
    –C /test
    -> extract file home.tar vào thư mục /test , thêm –v để xem quá trình extract


    *** extract 1 file cụ thể

    extract file a
    # tar –xf test.tar a
    (file nào cần extract thì phải ghi đúng đường dẫn trong file lưu trữ)

    *** extract từ vị trí 1 file cụ thể đến file cuối cùng -K

    -> option -tjf : xem file nén định dạng bz2 (bunzip2, sẽ trình bày bên dưới). Trong file test.bz2 có 5 file a b c d e. Ta sẽ extract từ file c đến hết. Kết quả ta sẽ có file c d e

    Khi create/extract lượng dữ liệu lớn , nếu ta không thể theo dõi hết quá trình thực hiện và có thể sẽ có một vài lỗi nào đó xảy ra thì nên ghi lại những thông báo lỗi vào file log bằng cách thêm dòng lệnh 2>> vào cuối câu lệnh.
    # tar –xf test.tar 2>> error.log


    *** xem cả permission trong file archive –v

    Xét folder C cụ thể : permission của nó là : drwxr-xr-x
    ký tự d ở đầu thông báo C là Directory (Folder)
    9 ký tự còn lại sẽ chia làm 3 nhóm : rwx r-x r-x
    -> chủ nhân (người tạo file/folder) có quyền đọc (read), ghi (write) và thực thi (execute)
    -> những user cùng group có quyền r-x : read và excute, không có quyền write
    -> others cũng chỉ có quyền read và execute

    *** tạo file lưu trữ “có chọn lọc” --exclude=

    -> thư mục hiện hành có file a b c và folder D
    -> tạo file test.tar chứa tất cả các file/folder tại thư mục hiện hành, ngoại trừ file a và folder D

    *** thêm file vào trong file lưu trữ -r (hoặc –u)



    (nếu tiếp tục thêm file x vào test.tar thì chương trình vẫn gắn vào cuối file test.tar , khi extract thì sẽ lấy file cuối cùng vì các file trước đã bị overwrite)
    Option –u : chỉ thêm vào nếu file đó mới hơn file đã tồn tại trong file lưu trữ


    *** “nối” 2 file lưu trữ với nhau –A


    1 lần chỉ nối được 2 file

    *** xóa file trong file lưu trữ --delete



    *** nén/giải nén với gzip –z và bzip2 -j

    -> lệnh "ls -li" : liệt kê file/folder trong thư mục hiện hành 1 cách chi tiết , ở đây nói đến nén thì ta chỉ cần quan tâm đến cột dung lượng (cột ở giữa chữ root và chữ Dec), đơn vị là byte

    Quá trình giải nén (thay –c bằng –x , có thể thêm –v để xem quá trình giải nén , dùng option nén nào (ở đây là –z) thì giải nén –x , hoặc xem nội dung file –t cũng phải có option đó)

    Bzip2 –j cũng tương tự gzip , bzip2 tỉ lệ nén cao hơn gzip
    (nên đặt đuôi file theo đúng chuẩn để khi giải nén còn biết dùng option nào)


    *** so sánh các file trong file lưu trữ với các file bên ngoài –d
    Trong file test.bz2 có 5 file là a b c d e , bên ngoài có file c d e (file c bên ngoài đã được thay đổi nội dung so với file c bên trong file nén)

    -> so sánh các file trong file nén test.bz2 với các file a b c d e f tại thư mục hiện hành. Kết quả :
    file a và b tại thư mục hiện hành không tồn tại
    file c có sự thay đổi
    file d và e không có gì thay đổi

    -------------------------------------------

    Phần sau mình sẽ giới thiệu các option giúp cho việc backup/restore dữ liệu với lệnh Tar