一:文件系統結構
文件目錄
Linux文件目錄結構是一個倒樹狀結構,從根(/)開始依次往下,根文件系統為rootfs:root filesystem;
文件名稱區分大小寫是由文件系統決定的,CentOS6.x默認文件系統為ext4,CentOS7.x上默認文件系統是xfs;
以點(.)開頭的文件為隱藏文件,文件路徑以(/)分割;
文件有倆類數據:元數據和數據;
文件系統分層結構:LSB Linux Standard Base
FHS:(Filesystem Hierarchy Standard)文件系統層次結構標準,想了解更多請訪問:http://www.pathname.com/fhs/
[root@centos6 /]# tree -L 1 . ├── bin 二進制程序 ├── boot 啟動相關,grub,kernel,initrafs等 ├── data 自己創建的數據目錄 ├── dev 設備文件 ├── etc 系統程序配置文件 ├── home 普通用戶家目錄 ├── lib 庫文件 ├── lib64 64庫文件 ├── lost+found ext4文件系統生成,用于存放無家可歸的文件,比如斷電造成文件系統錯亂 ├── media 通常用于光盤掛載 ├── misc 雜項,用戶在此文件夾下執行 cd cd/ 可自動掛載光盤 ├── mnt 掛載點 ├── net 偽文件系統 ├── opt 第三方軟件目錄,已棄用 ├── proc 偽文件系統 ├── root root用戶的家目錄 ├── sbin 只有管理員可以執行的程序 ├── selinux 和SELinux相關 ├── srv 一些服務啟動后所需要的文件 ├── sys 偽文件系統 ├── tmp 臨時文件夾,其權限為777,內容定期清理 ├── usr 第二層根,非系統應用存放于此 └── var 軟件產生的文件,列如/var/ftp/pub存放于此 23 directories, 0 files
文件命名規則
- 文件名最長255個字節
- 包括路徑在內文件名最長4095個字節
- Linux中文件所對應的顏色:藍色–>目錄;綠色–>可執行文件;紅色–>壓縮文件;淺藍色–>鏈接文件;灰色–>其他文件
- 文件名不能包含“/”,其他字符都合法
- 文件名稱區分大小寫(ext4)
?Linux上的應用程序的組成部分
- 二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
- 庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
- 配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
- 幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
Linux下文件類型
- -:普通文件
- d:目錄文件
- b:塊設備
- c:字符設備
- l:符號鏈接
- p:管道文件pipe
- s:套接字文件socket
ps:CentOS6.x和CenOS7.x 目錄區別
[root@centos7 /]# ls -l lrwxrwxrwx. 1 root root 7 Mar 28 01:54 bin -> usr/bin lrwxrwxrwx. 1 root root 7 Mar 28 01:54 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Mar 28 01:54 lib64 -> usr/lib64 lrwxrwxrwx. 1 root root 8 Mar 28 01:54 sbin -> usr/sbin [root@centos6 /]# ls -l dr-xr-xr-x. 2 root root 4096 Mar 28 11:15 bin dr-xr-xr-x. 11 root root 4096 Mar 27 17:08 lib dr-xr-xr-x. 9 root root 12288 Mar 28 11:14 lib64 dr-xr-xr-x. 2 root root 12288 Mar 28 11:15 sbin drwx------. 2 root root 16384 Mar 27 16:56 lost+found drwxr-xr-x. 2 root root 0 Mar 31 14:56 misc drwxr-xr-x. 2 root root 0 Mar 31 14:56 net drwxr-xr-x. 7 root root 0 Mar 31 2018 selinux
絕對路徑和相對路徑
絕對路徑
- 以正斜杠開始
- 完整的文件的位置路徑
- 可用于任何想指定一個文件名的時候
相對路徑
- 不以斜線開始
- 指定相對于當前工作目錄或某目錄的位置
- 可以作為一個簡短的形式指定一個文件名
pwd?顯示當前shell CWD的絕對路徑
-P 顯示真實的物理路徑
-L 顯示鏈接路徑
[root@centos6 ~]# ll lrwxrwxrwx. 1 root root 8 Mar 31 00:24 data -> ../data/ [root@centos6 data]# cd /root/data/ [root@centos6 data]# pwd /root/data [root@centos6 data]# pwd -L /root/data [root@centos6 data]# pwd -P /data
basename?取文件路徑基名
dirname?取文件路徑目錄名
[root@centos6 ~]# basename /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0 [root@centos6 ~]# dirname /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts
cd?切換文件目錄
cd 切換到家目錄
.. 父目錄
– 上一目錄
$PWD?當前目錄路徑變量
$OLDPWD?上一次目錄路徑變量
二:創建、查看、復制、移動、刪除文件
查看文件
ls?列出當前目錄的內容或指定目錄內容
用法:ls [options] [files_or_dirs]
選項:
-a 列出隱藏文件
-A 不顯示.和..
-R 遞歸
-l 以長格式列出
-d 顯示文件夾屬性
-1 文件分行顯示
-S 按文件大小排序
-t 按mtime排序
-u 按atime排序
-c 按ctime排序
-U 按目錄順序,按創建時間
-X 按文件后綴排序
-i 顯示inode
–time=
atime 訪問時間,讀文件
ctime 狀態時間,修改元數據會修改狀態時間
mtime 修改時間,修改文件數據
?stat?查看文件時間戳
[root@centos6 ~]# stat anaconda-ks.cfg File: `anaconda-ks.cfg' Size: 1478 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 1972445 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-03-30 20:31:01.333443435 +0800 Modify: 2018-03-30 20:31:01.333443435 +0800 Change: 2018-03-30 20:31:01.333443435 +0800
access time:訪問時間,atime,讀取文件內容
modify time: 修改時間, mtime,改變文件內容(數據)
change time: 改變時間, ctime,元數據發生改變
file?查看文件的類型
-b 列出文件辨識結果時不顯示文件名稱
-f FILELIST 列出文件列表文件中文件名的文件類型
-F?使用指定分隔符號替換輸出文件名后默認的”:”分隔符
-L 查看對應軟鏈接對應文件的文件類型
文件通配符
- * 匹配零個或多個字符
- ? 匹配任何單個字符
- ~ 當前用戶家目錄
- ~root 用戶root家目錄
- ~+ 當前工作目錄
- ~- 前一個工作目錄
- [0-9] 匹配數字范圍
- [a-z] 小寫字母
- [A-Z] 大寫字母
- [string] 匹配列表中的任何的一個字符
- [^string] 匹配列表中的所有字符以外的字符
- [:digit:]:任意數字,相當于0-9
- [:lower:]:任意小寫字母
- [:upper:]: 任意大寫字母
- [:alpha:]: 任意大小寫字母
- [:alnum:]:任意數字或字母
- [:blank:]:水平空白字符
- [:space:]:水平或垂直空白字符
- [:punct:]:標點符號
- [:print:]:可打印字符
- [:cntrl:]:控制(非打?。┳址?/li>
- [:graph:]:圖形字符
- [:xdigit:]:十六進制字符
創建空文件和刷新文件訪問、修改和改變時間
touch?創建空文件,刷新文件時間
用法:touch [OPTION]… FILE…
-a 刷新訪問時間和改變時間
-m 刷新修改時間和改變時間
-t?[[CC]YY]MMDDhhmm[.ss]
–time=atime|mtime (ctime不可指定時間刷新)
-c 如果文件不存在,則不予創建
ps:atime不一定在訪問文件之后被修改,因為:使用ext系列文件系統的時候,如果在mount的時候使用了noatime參數那么就不會更新atime的信息。而這是加了noatime取消了,不代表真實情況,反正, 這三個 time stamp 都放在 inode 中,若mtime, atime 修改, inode 就一定會改, 既然 inode 改了, 那 ctime 也就跟著要改了,之所以在mount option 中使用 noatime, 就是不想 file system 做太多的修改,而改善服務器性能。
復制文件
cp?復制copy
用法:
- cp[OPTION]… [-T] SOURCE DEST
- cp[OPTION]… SOURCE… DIRECTORY
- cp[OPTION]… -t DIRECTORY SOURCE…
- cpSRC DEST
復制規則:
選項:
-i 覆蓋文件時提示
-n 復制時不覆蓋文件
-R, -r 遞歸復制
-a ==?-dR –preserve=all? 保留鏈接,保留文件元數據,并且以遞歸方式復制,常用于歸檔備份
-d 復制鏈接時不復制原文件,只復制鏈接文件
–preserve[=ATTR_LIST]
默認保留mode,ownership,timestamps
也可選:context(上下文),links(鏈接),xattr(擴展文件屬性),all(全部)
-p ==?–preserve=mode,ownership,timestamps
-v 顯示詳細信息
-f 不提示強制執行,危險!
-u?只復制源比目標更新文件或目標不存在的文件
–backup=numbered 如果目標存在,覆蓋前先備份加數字后綴,建議加入alias
-t DIR 目標指定文件夾
移動文件和重命名
?mv?移動和重命名文件
用法:
- [OPTION]… [-T] SOURCE DEST
- [OPTION]… SOURCE… DIRECTORY
- [OPTION]… -t DIRECTORY SOURCE…
選項:同cp : -i|n|u|f|-t DIR…
rename?from to file… 批量修改文件名
[root@centos6 data]# touch file{1..10}.conf [root@centos6 data]# ls file10.conf file2.conf file4.conf file6.conf file8.conf file1.conf file3.conf file5.conf file7.conf file9.conf [root@centos6 data]# rename "conf" "conf.bak" file* [root@centos6 data]# ls file10.conf.bak file2.conf.bak file4.conf.bak file6.conf.bak file8.conf.bak file1.conf.bak file3.conf.bak file5.conf.bak file7.conf.bak file9.conf.bak
刪除文件:慎用!
rm?刪除文件和文件夾
用法:
- rm[OPTION]… FILE…
選項:同cp:-i|-f|-r|–no-preserve-root(強行刪除根,自殺) ,常用-rf搭配,建議設置alias:alias rm=’mv -i -t /Trash’
shred?安全刪除文件,從數據塊級別刪除,銷毀數據塊
-z 填充0
-v 顯示詳細信息
-u 執行填充后刪除文件
-n # 指定要覆蓋幾次數據塊操作
>BIGFILE? 刪除大文件,立即釋放硬盤空間
目錄操作
?tree?顯示目錄樹
-d 只顯示目錄
-L # 指定顯示的層級數目
-P pattern 只顯示由指定模式匹配到的路徑
?mkdir?創建目錄
-p 自動創建上一層沒有的目錄
-v 顯示創建詳細信息
-m MODE 創建目錄是指定文件夾權限
rmdir?刪除空目錄
-p 遞歸刪除父空目錄
-v 顯示詳細信息
ps:rm -r 遞歸刪除目錄樹,慎用!
三:inode(index node)
?inode是指在許多“類Unix文件系統”中的一種數據結構。每個inode保存了文件系統中的一個文件系統對象(包括文件、目錄、設備文件、socket、管道, 等等)的元信息數據,但不包括數據內容或者文件名。
元數據:
- 文件類型,權限,UID,GID
- 鏈接數(指向這個文件名路徑名稱個數)
- 該文件的大小和不同的時間戳
- 指向磁盤上文件的數據塊指針
- 有關文件的其他數據
四:符號(軟)、硬鏈接
鏈接
硬鏈接
在計算,一個硬鏈接是一個目錄條目,一個名字與一個關聯文件一上文件系統。所有基于目錄的文件系統都必須至少有一個硬鏈接,為每個文件提供原始名稱。
- 創建硬鏈接會增加額外的記錄項以引用文件
- 對應于同一文件系統上一個物理文件
- 每個目錄引用相同的inode號
- 創建時鏈接數遞增
- 刪除文件時:
- rm命令遞減計數的鏈接
- 文件要存在,至少有一個鏈接數
- 當鏈接數為零時,該文件被刪除
- 不能跨越驅動器或分區
符號鏈接(軟鏈接)
符號鏈接(軟鏈接)是一類特殊的文件, 其包含有一條以絕對路徑或者相對路徑的形式指向其它文件或者目錄的引用。
- 一個符號鏈接指向另一個文件
- ls -l的顯示鏈接的名稱和引用的文件
- 一個符號鏈接的內容是它引用文件的名稱
- 可以對目錄進行
- 可以跨分區
- 指向的是另一個文件的路徑;其大小為指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數
符號(軟)、硬鏈接的區別
本質:
- 硬鏈接相當于一個文件、多個名字
- 軟鏈接相當于一個文件的快捷方式,是不同文件
表象:
- 鏈接數不同,硬鏈接會增加文件的鏈接數,軟鏈接不會增加被鏈接文件的鏈接數
- 硬鏈接不能跨分區創建,軟鏈接則可以跨分區創建
- 目錄只能創建軟鏈接,不能創建硬鏈接
- 鏈接文件和原始文件的關系:當把原文件刪除硬鏈接不受影響,但是軟鏈接會無法訪問
- 軟鏈接的文件大小為被鏈接文件字符長度所占字節,但是硬鏈接則是文件實際大小
?常用創建、查看鏈接的命令
ln?創建文件鏈接
ln 原始文件 鏈接文件 創建硬鏈接
ln -s?原始文件 鏈接文件 創建符號(軟)鏈接
readlink?查看軟鏈接的原文件路徑
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94052