為了大家能夠理解文件系統,我們可以將計算機的文件系統類比成一個圖書館,文件本身可以成圖書館的各種繁多的書籍。圖書館的數,都是有類別和編號的,也有書架和區域。我們找一本數,先確認這個數是哪個類別的,通過類別,找到在圖書館的區域位置,找到書架,在通過編號查找書籍所在的位置。同樣的,Linux系統里的文件也是這樣的,在唯一的根目錄下,會有不同的目錄文件,目錄文件中又包含不同的目錄和文件,這種倒置的數狀結構,就是我們要了解的文件系統。
一、文件系統結構元素
Linux文件系統是從唯一的根目錄開始的,在沒有任何的更改的情況下,系統默認創建好以下一級目錄:
1、/boot:是存放系統引導啟動時,要加載的靜態文件、內核和ramdisk及grub等;
2、/bin:存放系統自身啟動和運行時會用到的核心二進制程序,不能獨立關聯分區;
3、/sbin:管理類基本命令,不能獨立關聯分區,系統啟動會用到的程序;
4、/lib:存放系統啟動時程序依賴的基本共享庫文件以及內核模塊文件;
5、/lib64:專用于×86_64系統上的輔助共享庫文件的存放位置;
6、/etc:存放系統配置文件的目錄;
7、/home:存放各個普通用戶家目錄的目錄文件;
8、/root:管理員的家目錄;
9、/media:系統便攜式移動設備的(掛載)目錄;
10、/mnt:臨時文件系統(掛載)目錄;
11、/dev:所有設備文件和特殊文件存儲位置;
12、/opt:第三方應用程序的安裝目錄;
13、/srv:系統上運行的服務用到的數據;
14、/tmp:臨時文件存儲位置;
15、/usr:UNIX操作系統軟件資源存放位置
(bin,sbin,lib,lib64,etc,share)
16、/var:經常發生變化的文件存放的位置
(cache,lib,local,lock,log,opt,run,spool,tmp);
17、/proc:用于輸出內核與進程信息相關的虛擬文件系統;
18、/sys:用于輸出當前系統上硬件設備相關信息虛擬文件系統;
19、selinux:相關的安全策略等信息的存儲位置;
以上目錄都是系統默認建立的,正常情況下,不可刪除,防止系統啟動和運行的故障。這些目錄中,普通用戶訪問時用到的是/home 目錄,/root目錄是系統管理員的家目錄。知道了基本的文件目錄后,那我們使用的系統應用程序都用到哪些目錄呢?下面的文件路徑就是了。
二進制程序:/bin? ,/sbin,/usr/bin ,/usr/sbin,/usr/local/bin,/usr/local/sbin;
庫文件:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib;
配置文件:/etc,/etc…. ,/usr/local/etc;
幫助文件:/usr/share/man ,/usr/share/doc,/usr/local/share/man, /usr/local/share/doc;
“圖書館”的區域和書架都已經劃分好了,如何區分不同類別的書籍呢?Linux系統中的純文字是無法直接凸顯的,所用到的方法是,在文件名上,顯示不同的顏色,可以做到一目了然。文件類型和顏色對應如下:
列表顯示的開頭第一個字母是文件的類型。
-(f):普通文件–白色
d ? ?? :目錄文件–藍色
b ? ?? :塊設備 –黃色
c ? ?? :字符設備–黃色
l ? ? ? :符號鏈接文件–淺藍色(失效后會紅色閃爍)
p ? ?? :管道文件–暗黃色
s ? ? ? :socket–粉紅色
現在我們已經知道了文件系統的基本結構和文件的類型,我們接著可以嘗試進入不同的目錄,查看目錄下的文件和文件信息。登陸進入系統,用戶的初始位置是在自己的家目錄(~),會在字符輸入界面的命令提示符的最右顯示。也可以通過 pwd 命令,在屏幕中輸出自己的目錄路徑。? ? ? ? ? ? ? ?
若是我們需要移動到其他的目錄,只要通過 cd 命令即可,可以先嘗試改變到根目錄下,到了更根目錄下,我們可以通過 ls 命令查看根目錄下存在的目錄和文件,若是目錄,還可以通過cd 命令進行轉移。若是已經知道了目錄的順序,直接輸入目錄的絕對路徑,可以一個 cd命令到指定的目錄下。當然也可以使用相對當前目錄的路徑(相對路徑),將上級目錄之前的目錄路徑省略,轉移到指定目錄。
這里查看到的都是非隱藏的文件,Linux文件系統對文件命令有如下的規則:1、文件命令最長255個字節;2、包括路徑在內文件名稱最長4095個字節;3、除了斜杠(/)和NUL,所有的字符都是可以作為文件名的。(不推薦);4、文件名大小寫敏感;5、所有 文件名是“.”開頭的文件都是隱藏文件。
二、文件的創建和查看
2、ls 命令也可以使用絕對路徑和相對路徑作為參數,直接查看指定目錄下的文件信息。其中 ls? -a? [目錄路徑]? 列出所有文件(包括隱藏文件)。-l 可以列表顯示更多額外信息,-R可以查看當前目錄下所有層級目錄的文件。具體更多的用法,我們可以查看幫助文檔。
另外,文件名可以使用文件通配符(glob)目錄查詢顯示。man 7 glob? 可以查詢通配符的使用方法,這邊不多做描述。
? ? ? ? ? ?
2、創建文件,可以使用touch 命令,若是創建時,只有文件名,沒有指定之前的目錄,這個命令默認是在當前目錄下創建,若是指定的目錄不存在,則無法創建。若是文件存在,會刷新文件的時間信息。文件的時間信息可以使用 stat 命令顯示。
access time? 訪問時間,讀取文件內容會改變 ? (atime)
modify time? 修改時間,改名文件中存儲的數據(mtime)
change time? 改變時間,文件大小,類型等信息發生改變(ctime)
3、創建目錄可以使用mkdir 這個命令,其中 mkdir -p 在創建不存在的目錄時,可以省略系統的提醒,直接生成對應的目錄文件。
三、文件刪除、復制、移動等操作
1、文件刪除:rm
rm命令會將文件直接刪除,這是個很危險的操作,刪除的文件時無法恢復的,所以系統已經通過別名的方法,將這個命令,更改為 rm -i ,使rm 命令成為交互的,在刪除文件前,系統會詢問用戶是否刪除。確認后會刪除。
常用的選項: -f? 強制刪除 ,不提醒;? -r :遞歸性 ; 可以使用文件通配符
2、文件復制:cp
cp可以實現文件的復制,可以作為文件備份的一種方法,具體的用法如下:
cp [OPTION]… [-T] SOURCE(源) DEST (目標文件)?
cp [OPTION]… SOURCE… DIRECTORY (目錄)?
cp [OPTION]… -t DIRECTORY SOURCE… ?(省略號代表多個)
cp SRC(源) DEST
cp 命令常用的選項: -av選項一般比較常用。
-i:覆蓋前提示
-n:不覆蓋,注意兩者順序 ?
-r, -R: 遞歸復制目錄及內部的所有內容 ?
-a: 歸檔,相當于-dR –preserv=all ?
-p: 等同–preserv=mode,ownership,timestamp ?
-v: –verbose ?
-f: –force ?
-u:–update 只復制源比目標更新文件或目標不存在的文件 ?
–backup=numbered 目標存在,覆蓋前先備份加數字后綴
-d:–no-dereference –preserv=links 不復制原文件, 只復制鏈接名 ?
–preserv[=ATTR_LIST] mode: 權限
ownership: ?? 屬主屬組
timestamp: links ,xattr, context, all
3、移動mv(改名)
mv [OPTION]… [-T] SOURCE DEST ?
mv [OPTION]… SOURCE… DIRECTORY ?
mv [OPTION]… -t DIRECTORY SOURCE…
常用選項 -i:交換式,文件名出現重復時,移動或者改名,會進行提示。
-f:強制,不進行提示。
rm和mv 系統已經自動進行別名,通過 alias 命令可以查看。
四、其他文件系統的操作命令
tree? 命令 可以用樹狀圖的形式顯示當前目錄下的文件和目錄的結構,可以對當前目錄的情況做到一目了然。
rmdir 命令是刪除目錄的命令,也可以配合 -p選項進行刪除,但是刪除的是空目錄,若是有一個文件,則無法刪除。
以上命令的具體使用方法,我們都可以通過幫助文檔查詢到詳細的信息,這里不再贅述。
五、軟鏈接和硬鏈接
提到軟鏈接和硬鏈接,我們需要了解 inode 這個概念。系統中的文件是存儲在磁盤中的,計算機讀取硬盤的最小單位是一個“塊”(block),大小是4kb。有的文件是不止占用一個“塊”的,無法達到快速訪問數據本身外的信息,所以需要將文件內容本身外的元數據信息以節點(本身會小巧)的方式單獨的存儲在一個專門的區域。這個區域就是inode ,中文名稱為“索引節點”。inode 包含文件的元數據信息,具體內容如下:
(1)文件類型,權限,UID,GID;
(2)鏈接數(指向這個文件名路徑名稱個數);
(3)該文件的大小和不同的時間戳 ;
(4)指向磁盤上文件的數據塊指針 ;
(5)有關文件的其他數據;
inode 使用信息可以使用 df? -i 命令查看(df 本身是查看磁盤空間使用信息的命令),目錄中的文件,就是通過文件名,引用的inode號, 一個目錄是目錄下的文件名和文件inode號之間的映射。一般 inode 表會占用磁盤空間的12.8%,若是inode已經被用光,但是磁盤還有空間,這種情況下,也是無法繼續存儲文件的。需要清理inode表。
1、硬鏈接
? 創建硬鏈接會增加額外的記錄項以引用文件 ,對應于同一文件系統上一個物理文件 , 每個目錄引用相同的inode號 ,在創建時鏈接數遞增 ,而刪除文件時: rm命令遞減計數的鏈接,文件要存在,至少有一個鏈接數 ,當鏈接數為零時,該文件被刪除。注意硬鏈接不能跨越驅動器或分區 。?
語法: ln ?? filename ? [linkname ]
2、軟連接?
一個軟鏈接指向的是另一個文件 ,軟連接的文件類型和原來的是不同的。 ls – l 是顯示鏈接的名稱和引用的文件 ,而一個符號鏈接的內容是它引用文件的名稱 。軟鏈接可以對目錄進行設置,也可以跨分區。?實際上,軟連接指向的是另一個文件的路徑;其大小為指向的路徑字符串的 長度;創建或者刪除一個文件的軟鏈接不增加或減少目標文件inode的引用計數。?
語法: ln -s filename [linkname]
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88982