Hệ thống File (File system)
Trang 1Hệ Thống File (File System)
Trang 4Một số thư mục đặc biệt
• Thư mục gốc /root
– Thư mục riêng của siêu người dùng root.
– Lưu trữ các file tạm thời, nhân Linux và các file nhị phân quan trọng
• Thư mục /bin: chứa các file khả thi
• Thư mục /dev: chứa các trình điều khiển thiết bị
• Thư mục /etc: chứa các file cấu hình hệ thống
Trang 6VFS (Virtual File System)
Trang 7Hệ thống tệp - Cấu trúc nội tại
Trang 8Hệ thống tệp - Cấu trúc nội tại
• Mọi file trong Linux bao gồm
– Các khối dữ liệu chứa nội dung file
– Một Inode (Index Node)
• Được nhân hệ thống cấp phát khi file được tạo mới
• Chứa thông tin về địa chỉ các khối chứa dữ liệu file
– Có một hoặc nhiều tên
• Tên file và chỉ số Inode là hai trường của một phần
tử của thư mục
Trang 9Hệ thống tệp - Cấu trúc nội tại
• Type: Xác định kiểu file
– File thông thường
– The other remain.
• Links:Số lượng liên kết với Inode
• Size: Kích thước file (byte)
• Timestamps
– Thời điểm file được tạo
– Thời điểm file được sửa đổi
Trang 10Thư mục - Cấu trúc
Trang 11Thư mục – Lệnh cơ bản
• Tạo thư mục : mkdir <dir_name>
• 2 thư mục con mặc định : = cha, = chính mình
Trang 12Thiết bị ngoại vi (device)
• Như một tệp (user view)
– Một lá trong cây FS (trong danh mục /dev) – Cùng thuộc tính (chủ nhân, quyền,…)
• Hai loại ngoại vi :
– Block
– ký tự
Trang 13Ngoại vi block
• Một số đặc trưng:
– Đơn vị chuyển dữ liệu cố định: block (512B, 1KB, 4KB )
– Truy nhập thẳng (block n˚i)
– Hệ thống ghi nhớ mọi trao đổi trong bộ nhớ
– Có thể tạo lập hệ thống file
• Truy nhập dữ liệu qua 2 bước :
– Ví dụ : đọc (read) :
Trang 14Ngoại vi ký tự
• Tất cả ngoại vi không phải loại block :
– Trao đổi thông tin khuôn dạng bất kỳ
Trang 15Ngoại vi giả (pseudo devices)
• Phần tử được quản lý như những ngoại vi (có driver) song không gắn với một phần
tử vật lý
• /dev/null: "thùng rác“
• /dev/tty: terminal gắn với các
Trang 17Liên kết – Hard Link
• Là một tên mới cho một file đang tồn tại
• Không có sự phân biệt giữa file gốc và file liên kết
• Cùng chia sẻ một Inode
• Không thể tạo liên kết cứng tới thư mục
• Không thể link giữa hai hệ thống file khác nhau
Trang 18Liên kết – Soft Link
• Con trỏ chỉ dẫn tới một file hoặc thư mục
• Các thao tác (mở, đọc, ghi)
– Được thực hiện trên file liên kết
– Tự động tham chiếu và thực hiện trên file đích – “Xóa”: chỉ xóa trên file liên kết
• Cho phép thiết lập liên kết giữa các hệ
thống file
• Xoá source => truy cập link -Not OK!
Trang 19Lệnh tạo liên kết
• ln [tùy-chọn] <đích> [tên mới]
– -d, -F, directory: Tạo liên kết cứng đến thư mục
– -s, symbolic: tạo liên kết mềm
• #ln –s /usr/doc/g77/DOC g77manual.txt
Trang 20– Với thư mục, quyền x
• Cho phép di vào, di ra thư mục
Trang 21Kiểm soát truy nhập
• Căn cứ vào UID và GID của tệp và tiến
– UID đăng nhập (NSD) vs UID thực (tiến trình)
• super-user (root, UID=0) có tất cả các
Trang 22Kiểm soát truy nhập
• Tạo mới một tệp, đổi tên (mv) và xóa tệp (rm)
– Kiểm soát qua quyền w của thư mục
• Xóa tệp phụ thuộc vào quyền của tiến
trình trên thư mục chứ không phải trên bản thân tệp
Trang 23Kiểm soát truy nhập
Trang 24Lệnh liên quan quyền truy nhập
Trang 25-Lệnh liên quan … (tiếp)
• chown [tùy_chọn] [chủ] [.nhóm] <file …>
– Thay đổi quyền sở hữu của file, thư mục
Trang 26Lệnh liên quan … (tiếp)
• chmod [tùy_chọn] <mod [,mod] …> <file,…>
• chmod [tùy_chọn] <mod_hệ_8> <file,…>
Trang 27Lệnh liên quan … (tiếp)
• Các xác lập quyền tương đối
– Ví dụ:
• chmod g+w test
• chmod o-rx test
• Các xác lập quyền tuyệt đối
– Mỗi cụm 3 bít sẽ tương đương một số trong hệ số 8
quyền truy cập = bộ 3 chữ số hệ số 8
Trang 28Thao tác với thư mục
Trang 29Thao tác với thư mục
• Lệnh đổi tên thư mục
– mv <tên_cũ> <tên_mới>
• Lệnh xác định thư mục hiện thời
– pwd
Trang 30Thao tác với thư mục
• Lệnh xem thông tin về thư mục, file
– ls [tùy_chọn] [file] …
• [tùy_chọn]
– -a: liệt kê tất cả các file, bao gồm file ẩn – -l: đưa ra thông tin đầy đủ về file và thư mục – -s: đưa ra kích thước file
– -R: liệt kê lần lượt các thư mục và nội dung của thư mục
• Mỗi dòng kết quả của lệnh ls có dạng như sau
Trang 31Thao tác với file
Trang 32Thao tác với file
• -l, link: chỉ tạo liên kết
• -p: duy trì thuộc tính của file nguồn
• -R: sao chép đệ quy
• -s: chỉ tạo liên kết mềm
Trang 33Thao tác với file
Trang 34Thao tác với file
• Lệnh xác định kiểu file
• file [tùy_chọn] [-f file] [-m <file_ảnh> …]
<file> …
– [tùy_chọn]
• -b: chỉ đưa ra kiểu file mà không kèm tên file
• -z: xem kiểu file nén
– Kết quả
• text
• executable
• data
Trang 35Thao tác với file
• Lệnh xem nội dung file
– cat [tùy_chọn] <tên_file>
Trang 36Thao tác với file
• Xem nội dung file với lệnh more
more [-dlfpcsu] [-số] [+/xâu_mẫu] [+dòng_số] [file…]– [tùy_chọn]
• -số: số dòng nội dung file được hiện thị
• -d: hiện thị các thông báo tương tác
• -p: không cuộn màn hình thay vào đó là xóa màn hình cũ
• -s: xóa các dòng trống liền nhau, chỉ giữ lại một
• +/xâu_mẫu: chuỗi được tìm kiếm trước khi hiển thị
• +dòng_số: dòng bắt đầu hiện thị
Trang 37Thao tác với file
• Lệnh đếm từ và dòng
wc [tùy_chọn] [file]…
– [tùy_chọn]
• -c, byte: đưa ra số ký tự trong file
• -l, liné: đưa ra số dòng trong file
• -L: đưa ra chiều dài của dòng dài nhất
• -w, words: đưa ra số từ trong file
Trang 38Thao tác với file
• Lệnh loại bỏ những dòng không quan trọng
uniq [tùy_chọn] [input] [output]
– Loại bỏ các dòng trùng lặp kề nhau từ [input] (thiết bị vào chuẩn) và chỉ dữ lại một dòng duy nhất rồi đưa ra [output] (thiết bị ra chuẩn)
Trang 39Thao tác với file
• Sắp xếp nội dung file
sort [tùy_chọn] [file] …
– Hiện thị nội dung [file] sau khi đã sắp xếp
– [tùy_chọn]
• +<số1> [-<số 2>]: xác định khóa sắp xếp trên các dòng từ vị trí <sô1> đến <số2>
• -b: bỏ qua các dấu cách đứng trước trong phạm vi sắp xếp.
• -d: xem như chỉ có các ký tự [a-zA-Z0-9] trong khóa sắp xếp
• -f: không phân biệt chữ hoa, chữ thường
Trang 40Thao tác với file
• Thêm số thứ tự các dòng trong file
• -i, page-increment=số : đánh số thứ tự dòng theo cấp số cộng với công sai là <số>
• -n, number-format=khuôn : khuôn nhận các giá trị sau
– ln : căn trái, không có số 0 ở đầu – rn: căn phải, không có số 0 ở đầu – rz: căn phải, có số 0 ở đầu
Trang 41Thao tác với file
• Lệnh xem qua nội dung file
head [tùy_chọn] [file] …
– Mặc định đưa ra màn hình 10 dòng đầu tiên của [file] Nếu không có [file] hoặc [file] bằng
“-”, thì đọc từ thiết bị vào chuẩn
– [tùy_chọn]
• -n, lines=n: hiện thị n dòng đầu tiên
• -q: không đưa ra tên file ở dòng đầu
Trang 42Thao tác với file
• Xem qua nội dung file
tail [tùy_chọn] [file] …
– Ngầm định đưa ra 10 dòng cuối cùng của file Nếu không có [file] hoặc file bằng “-” thì đọc
từ thiết bị vào chuẩn
– [tùy_chọn]
• -f, follow[={name|descriptor}]: sau khi hiện nội dung file, sẽ hiện thị thông tin về file
• -n, lines=n: hiện thị n dòng cuối cùng
• -q: không đưa ra tên file ở đầu dòng
Trang 43Thao tác với file
• Tìm sự khác nhau giữa hai file
diff [tùy_chọn] <file1> <file2>
– [tùy_chọn]
• -a: xem tất các file ở dạng văn bản và so sánh từng dòng
• -b: bỏ qua sự thay đổi về số lượng ký tự trống
• brief: chỉ thông báo khi có sự khác nhau
• -i: không phân biệt chữ hoa chữ thường
• -r: đệ quy trên thư mục
Trang 44Biểu thức chính quy (Regular Expression)
Trang 45Thao tác với file
• Lệnh tìm nội dung file
grep [tùy_chọn] <mẫu_lọc> [file]
– Hiện thị tất cả các dòng chứa <mẫu_lọc> trong <file> Nếu [file] rỗng hoặc bằng “-” thì đọc từ thiết bị vào chuẩn.
Trang 46Thao tác với file
• Lệnh tìm nội dung file
grep [tùy_chọn] <mẫu_lọc> [file]
[egrep or fgrep]
– [tùy_chọn]
• -B n: đưa ra n dòng trước dòng chứa mẫu
• -C n: hiện thị n dòng nội dung
• -b: hiện thị địa chỉ tương đối các dòng được đưa ra
• -c: đếm số dòng tương ứng chứa mẫu trong file
• -f file: lấy mẫu từ file, mỗi dòng một mẫu.
• -H: đưa ra tên file trên mỗi dòng chứa mẫu
• -h: không hiện thị tên file
• -n: thêm số thứ tự của dòng chứa mẫu
• -r: đệ quy
Trang 47Thao tác với file
• Ví dụ lệnh tìm nội dung file grep
• #grep -H thutest text
Trang 48Thao tác với file
• Tìm các đặc tính của file
find [đường_dẫn] [biểu_thức]
– Tìm kiếm file trong [đường_dẫn]
– [biểu_thức]
• \( EXPR \); !EXPR hoặc –not EXPR; EXPR1 -a EXPR2
– [tùy_chọn]
• -depth: TÌm từ nội dung bên trong thư mục trước
• -amin n: file được truy nhập n phút trước
• -atime n: tìm file được truy nhập n*24 giờ trước.
• -cmin n: trạng thái file được thay đổi n phút trước đây
• -ctime n: trạng thái file được thay đổi n*24h trước đây
• -empty
Trang 49Thao tác với file
• Tìm các đặc tính của file (tiếp)
– [tùy_chọn]
• -group nhóm: file thuộc quyền sở hữu của nhóm
• -links n: file có n liên kết
• -mmin n: dữ liệu file được thay đổi lần cuối vào n
phút trước đây
• -mtime n: dữ liệu được sử vào n*24h trước đây
• -name mẫu: tìm kiếm file có tên là mẫu.
• -uid n: chỉ số người sở hữu file là n
Trang 50Thao tác với file
• Tìm các đặc tính của file (tiếp)
– [tùy_chọn]
• -type kiểu: file thuộc kiểu
– b: đặc biệt theo khối – c: đặc biệt theo ký tự – d: thư mục
– f: file bình thường – l: liên kết tượng trưng
• -print: in ra danh sách các file tìm thấy
• -exec <lệnh> {} \ ;
– Thực hiện <lệnh>
– {}: thay thế cho tên file tương ứng – Có dấu cách giữa ‘{}’ và ‘\’
Trang 51Thao tác với file
• Ví dụ về lệnh file
# find -type f -exec grep -l -i mapping {} \ ;
Trang 52Nén và sao lưu các file
• Sao lưu các file
tar [tùy_chọn] [<file>, …] [<thư_mục>, …]
– [tùy_chọn]
• -c: tạo file lưu trữ mới
• -x: tách các file ra khỏi file lưu trữ
• -C tên_thư_mục: thay đổi đến thư mục tên_thư_mục
• remove-files: xóa file gốc khi lưu trữ xong
• -v, verbose: hiện thị tiến độ lưu trữ
• -f file: xác định tên file lưu trữ là file.
– Ví dụ: tar –cf /dev/fd0H1450 /usr/src
Trang 53Nén và sao lưu các file
• Nén dữ liệu
gzip [tùy_chọn] [-S suffix] [<file>]
gunzip [tùy_chọn] [-S suffix] [<file>]
zcat [tùy_chọn] [<file>]
– [tùy_chọn]
• -d: giải nén
• -f: ép buộc thực hiện nén hoặc giải nén
• -l: hiện thị các thông tin liên quan đến file được nén
• -r: nén thư mục
Trang 54Nén và sao lưu các file
• Nén dữ liệu
compress [tùy_chọn] [<file>]
uncompress [tùy_chọn] [<file>]
• Tạo ra file nén với phần mở rộng Z
Trang 55File containing Data of Fields
• Gồm nhiều dòng
– Trên mỗi dòng chứa các dữ liệu về trường
(Fields)
– Các trường được phân cách với nhau bởi một
ký hiệu phân cách trường (User-defined)
– Số trường trên các dòng phải bằng nhau
– Các trường trên dòng được đánh số thứ tự từ 0.
Trang 56File containing Data of Fields
• #sort [tùy_chọn] <file>
• Sắp xếp nội dung file chứa dữ liệu trường
• [tùy_chọn]
– -n :sắp xêp tăng dần; -r : sắp xếp giảm dần
– -tx: x là ký tự phân cách trường (Default \t)
– +<Số_hiệu_1> -<Số_hiệu_2>: Khóa sắp xếp là từ trường <Số_hiệu_1> cho đến trường ở trước trường
<Số_hiệu_2> [ -k n,m instead for current]
• Có thể sắp xếp theo nhiều trường
• $ sort -t: -n +4 -5 carinfo
– Sắp xếp theo trường giá (trường thứ 4 trong carinfo)
Trang 57File containing Data of Fields
• $tr set1 set2 < file
– Kí tự trong set1 trong tệp file được thay thế bởi kí tự tương ứng trong set2
• $ tr a-z A-Z <carinfo
• $cat f1 f2 f3 | tr set1 set2
Trang 58File containing Data of Fields
• $cut [-dx] –f<danh_sách> <file>
• Lấy ra nội dung các trường trong <file>
Trang 59THE END What’s on next time?