文件管理
前言
Linux的一則哲學:一切皆文件。既然入坑,那么管理linux就是管理一堆文件,操作文件這是展示個人十八般武藝的時候,功夫高下一招下。怎么成為高手,高手的招式都有哪些,拳腳掌刀槍棍棒,一招一式如何練就。
1文件存儲
文件存儲就好比每個練武人必備的技能——挨打,在你耍十八般武藝前,必須先扛住對方的一掌。我們不必擁有金剛罩鐵布衫,至少要學會如何躲避拆招。
在linux中存儲一個文件,我們把文件分為兩個部分存儲,一部分是信息部分,一部分存儲數據。
存儲信息的部分叫inode,存儲數據的部分叫block。inode的結構與數據的關系圖1.1:
圖1.1 inode的結構與數據的關系圖
Inode是不可以跨分區,就好比每個小區都有門牌號,inode就是門牌號,小區就是分區。門牌號雖然一樣,但是里面住的人不一樣。
2文件類型
文件操作前,我們要了解都有哪些文件類型,就像一個武林盟主的尋常的一掌,快一分慢一分都是累贅。真正的高手的任何一招都是經過千萬磨練的,有些文件類型我們看似了解,其實我們不知道高手為什么要用3分力,為何不直接施展絕技一招秒殺。
1)f,普通文件file
文件也有很多類型:文本文件、視頻文件、壓縮文件文件。一個文件占用一個inode。
可以使用file FileName查看文件類型。
# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII English text
2)d,目錄文件directory,目錄的數據塊block內放置該目錄下的文件的文件名和inode信息
3)l,鏈接文件link,(鏈接文件分為硬連接和軟連接)l只指軟鏈接。
1硬鏈接,其本質是在目錄文件的數據快中添加一條新的數據,inode直接指向被鏈接文件的inode,使這個inode有兩條或多條路徑可以直接抵達。感覺很不形象,其實就是在一個井里插了兩個水泵。
使用ll dir可以查看文件的硬鏈接數,紅色部分內就是鏈接數。
2軟鏈接,則是前面一個水泵把水抽到自己家水池里后,后面的人把水泵插到前一家人的水池里。既然是把水管插到別人家的水池里,那么前一家斷水,你家也就斷水了。
當我們用的是軟連接你想用水必須知道前一家的水池在哪里?這里就比較有趣了,比如前一家搬家了,那我們怎么辦。斷水。這里就分為兩種情況了。
其中一種叫相對路徑,比如前一家給你留了他家的電話,他再怎么搬家我們都會知道他再哪里,但為了找到他家比較麻煩,每次想喝水都要先給他打電話,我們按照電話里的方法一步步跑到他家。
還有一種就是使用絕對路徑,他直接告訴我們他家住在男兒國250號,但是這有一個壞處,國家改名為女兒國后,我們就找不到他家了,我們就會永遠的斷水了。
4)c,字符設備character
接受字符的文件,比如終端的tty。
5)b,塊設備block
磁盤文件一般為塊文件,可以隨機讀存。
6)s,套接字文件sockt
用于同一主機進程間通信的文件,比管道強大的多。
7)p,管道文件pipe
把數組、字符串等轉送給其他進程。
3文件屬性
文件屬性
-rw-r–r– 1 root root 0 Oct 19 18:17 11aa
第一位是文件類型
234位是的屬主的讀、寫、執行權限
567位位是屬組的權限
8910位是其它用戶的權限
1是硬鏈接數
第一個Root是屬主
第二個root是屬組
0是文件大小
然后就是文件訪問時間
最后是文件名
文件的信息不僅如此,使用stat可以查看文件更多的信息。文件的訪問時間簡稱atime,修改時間簡稱mtime,改變時間簡稱ctime。centos6文件系統的atime的時間時實時更新的,centos7上的atime只有時間相差超過一天才會更新。
總結
linux的文件結構,其中inode是根本其中存放文件的信息,block存放數據。文件的的block放的是數據,目錄的block中存放的是其子目錄和文件的名稱和inode號。
原創文章,作者:mortimer2015,如若轉載,請注明出處:http://www.www58058.com/53254