Đă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

      Xếp
      root

      Giới tính : Nữ

      Tuổi : 32

      Đến từ : HCM

      Ngày Tham gia : 13/06/2011

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

      #1

       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 đã
      Cơ bản về lệnh Tar trên Linux Image001
      -> 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

      Cơ bản về lệnh Tar trên Linux Image002
      -> 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

      Cơ bản về lệnh Tar trên Linux Image003
      -> 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
      Cơ bản về lệnh Tar trên Linux Image005

      *** extract 1 file cụ thể
      Cơ bản về lệnh Tar trên Linux Image006
      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
      Cơ bản về lệnh Tar trên Linux Image007
      -> 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
      Cơ bản về lệnh Tar trên Linux Image008
      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=
      Cơ bản về lệnh Tar trên Linux Image009
      -> 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)
      Cơ bản về lệnh Tar trên Linux Image010
      Cơ bản về lệnh Tar trên Linux Image011

      (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
      Cơ bản về lệnh Tar trên Linux Image012

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

      *** xóa file trong file lưu trữ --delete
      Cơ bản về lệnh Tar trên Linux Image013


      *** nén/giải nén với gzip –z và bzip2 -j
      Cơ bản về lệnh Tar trên Linux Image014
      -> 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 đó)
      Cơ bản về lệnh Tar trên Linux Image015
      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)
      Cơ bản về lệnh Tar trên Linux Image016
      -> 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