Linux入门——文件管理
?
我們知道Linux有一個思想“一切都是一個文件(包括硬件)”,這是一篇關于基礎文件管理的心得
文件系統結構元素
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文件系統與目錄結構
Linux文件的特點:
? ? ? ? ? ? ? ? ? ? ? ? 元數據:metadata?? (文件屬性:類型,權限,從屬關系,大小,時間,等等)
? ? ? ? ? ? ? ? ? ? ? ? 數據:data? (文件本身內容)
? ? ? ? ?4.文件名最長255個字節
? ? ? ? ?5.文件的劃分
? ? ? ? ? ? ? ? ? ? ? ?-:普通文件???? ????????d: 目錄文件????????? b: 塊設備
? ? ? ? ? ? ? ? ? ? ? ? c: 字符設備???????????? l: 符號鏈接文件????? p: 管道文件pipe
? ? ? ? ? ? ? ? ? ? ? ? s: 套接字文件socket
? ? ? ? ??
Cd:改變目錄
切換至上一級目錄:cd ..
切換至當前用戶主目錄:cd (回到根目錄)
切換至以前的工作目錄:cd -(只能在兩個目錄間切換)
創建和查看文件
Ls
ls (list): 列出文件名 ,若不指定文件名或目錄名,則列出當前 目錄,默認自動展開列出一級子目錄的文件名
ls -a 顯示所有文件,包含隱藏文件
ls? -l = (ll) 列出文件的類型、權限、鏈接數、owner、group、大小,時間,名字
ls -d 列出目錄但不展目錄
ls? -R? 目錄遞歸通過(不舉例子了,我曹列個沒完沒了)
stat
stat ??文件名 ???查看文件的狀態,我們主要關注的是三個時間戳::
access time:訪問時間,atime,讀取文件內容(訪問時改變)
modify time: 修改時間, mtime,改變文件內容(文件本身內容改變時改變)
change time: 改變時間, ctime,元數據發生改變(文件元數據改變時改變)
Touch
Touch ??文件名 ???若文件不存在,則創建一個空文件,若文件存在則更新時間戳
Mkdir
?mkdir ???目錄名??
mkdir ?-p ?a/b/c/d/e 連續創建多級目錄
?
復制和刪除文件
Cp
cp 目標文件?? 目的文件(若目的文件不存在則創建改文件,但只能創建一級文件,兩級不行:
cp -r /etc /app/123/234/456? 會報錯)
cp ?-r或-R? 遞歸復制,如源包含目錄,一定要遞歸才能復制
cp ?-d 當復制的源是一個軟鏈接時,復制出的文件,也是軟鏈接,若不加d,則復制完整的源文件
cp? -p 保留復制文件的 權限,owner,group,時間 戳不變
cp ?-v? 顯示復制詳細信息
rm
rm –rf * 強制刪除所有文件
rm –rf / 慎用
索引節點
在當前文件系統中,文件分為兩部分: 塊和節點 ,塊內存儲文件的數據,節點存儲文件的元數據
一個節點(inode)是在一個表項,包含有關文件的信息(元數據),包括:
? ? ? ? ?1.文件類型,權限,UID,GID
? ? ? ? ?2.鏈接數(指向這個文件名路徑名稱個數)
? ? ? ? ?3.該文件的大小和不同的時間戳
? ? ? ? ?4.指向磁盤上文件的數據塊指針
? ? ? ? ?5.有關文件的其他數據
對于一個文件來說有且只有一個節點(inode節點就好比文件的身份證)
Inode只有126B(現在好像大了是256B)而一個節點大小是2B,inode是如何存儲文件的呢
?
?
Inode分為 12 直接指針,一個間接指針, 一個雙重間塊接指針,一個三重間接塊指針
間接指針指用一個塊去存儲Inode的指針
我們假設一個block(塊)大小是1K,那么我們存儲文件的在最大容量是:
(12*1K +256*1k+256*256*1K+256*256*256*1K)/1024/1024=16G
如果你這個磁盤存儲的文件比較大可以擴大block容量提升性能(畢竟你的指針就少了)
目錄的實質:
我們要明白文件的名字是不可能唯一的,但文間的inode號是唯一的
在block中是不存在子文件這一說法的,所有文件都是平級關系,目錄的inode中存儲目錄的元數據,目錄的block存儲的是子文件的名字和子文件的inode號
? ? ? ? ? 文件引用一個是inode號
? ? ? ? ? 人是通過文件名來引用一個文件
? ? ? ? ? 一個目錄是目錄下的文件名和文件inode號之間的映射
?
?
CP命令的實質:
? ? ? ? ?分配一個空閑的inode號,在inode表中生成新條目
? ? ? ? ?在目錄中創建一個目錄項,將名稱與inode編號關聯
? ? ? ? ?拷貝數據生成新的文件
Mv命令的實質
1.如果mv命令的目標和源在相同的文件系統,作為mv命令
? ? ? ? ? ?用新的文件名創建對應新的目錄項
? ? ? ? ? ?刪除舊目錄條目對應的舊的文件名
? ? ? ? ? 不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!?
2.如果目標和源在一個不同的文件系統,mv相當于cp和rm
rm命令的實質:
? ? ?鏈接數遞減,從而釋放的inode號可以被重用
? ? ? 把數據塊放在空閑列表中
? ? ? 刪除目錄項
? ? ? 數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋。
硬鏈接
我們做個試驗
1.我們創建兩個目錄dir1,dir2,以及一個文件a并向其輸入內容hi
2.在dir1中創建一個a的硬鏈接b,dir2創建一個a的硬鏈接b,并查看ls –iRl
3.刪除a(此時b,c內容不變)
4.修改dir1中的b(此時c中的內容也發生改變)還是那句話一個文件只有一個inode號只要inode號不變無論他有多少名字都是同一個文件,就好比人可以有多個名字,但只有一個身份證號
用一個形象的例子來表示硬鏈接,a要給c打電話,但他沒有c的電話,b有,b告訴a電話號碼,以后a再去聯系c就不需要b了
我們亦可以了解到
1.硬鏈接一旦創建成功,則沒有源和目的文件關系
2.硬鏈接必須在相同的分區下
3.硬鏈接不能對目錄創建
4.目錄的硬鏈接數包含目錄自身的名字,以及 . 和子目錄里的 ..
軟連接
同樣我們也舉個例子
1在dir1 創建b的軟連接b.txt通過相對路徑
2在dir1 創建b的軟連接b1.txt通過絕對路徑,并查看
3刪除b(b.txt,b1.txt都不可用),并查看
4重新創建一個b并輸入hello,并查看(都可用)
這就好a要給c打電話,但他沒有c的電話,b有,b用自己手機把c號碼撥通后給了a,以后a再去聯系c依舊需要b
1.軟連接就相當于windos下快捷方式
2.軟鏈接可以跨分區
3.可以相對路徑 ,也可以絕對路徑,在創建相對路徑時,推薦進入到最終目錄,再創建
4.刪除源,軟鏈接不可用,同時軟連接不關心源是什么,只要有源就行
5.軟連接存儲的是地址
6.軟連接相當于創建一個新文件
?
?
轉載于:https://www.cnblogs.com/angge/p/9308942.html
總結
以上是生活随笔為你收集整理的Linux入门——文件管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ribbon之ServerList
- 下一篇: Confluence 6 启用远程 AP