一作箍、lrzsz
Linux和Windows互傳文件工具。
1. 安裝
yum install lrzsz
rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
二、Linux一級目錄
帶*號為標(biāo)準(zhǔn)的目錄結(jié)構(gòu)模聋。
boot*
存放靜態(tài)文件和啟動相關(guān)文件既鞠,包括內(nèi)核晕翠。
內(nèi)核文件:
ll -h /boot/vmlinuz-2.6.32-696.el6.x86_64
-rwxr-xr-x. 1 root root 4.1M Mar 22 2017 /boot/vmlinuz-2.6.32-696.el6.x86_64
dev*
存放設(shè)備相關(guān)文件瞳浦。
字符設(shè)備担映,不是硬件的,是邏輯上的設(shè)備术幔。按照順序訪問另萤。沒有緩存概念。如:/dev/zero诅挑、……四敞;
塊設(shè)備,隨機(jī)訪問(按照一定規(guī)則拔妥,快速定位文件所在位置)忿危。有緩存概念。如:/dev/sda没龙、/dev/sdb铺厨、……。
etc*
存放系統(tǒng)配置硬纤。
lib*
存放共享庫解滓。
media*
掛載點,用于掛載設(shè)備筝家。
mnt*
掛載點洼裤,一般是管理員手工掛載。
opt*
存放第三方應(yīng)用程序軟件包溪王。
sbin*
存放管理員運(yùn)行的程序腮鞍。
bin*
存放普通用戶能運(yùn)行的程序。
存放基本命令庫莹菱,基本二進(jìn)制程序移国。
在CentOS7中,bin不是文件道伟,而是軟鏈接迹缀。
srv*
存放服務(wù)相關(guān)的程序和數(shù)據(jù)。
tmp*
存放臨時文件蜜徽。
usr*
第二層目錄結(jié)構(gòu)裹芝,存放大部分應(yīng)用程序。默認(rèn)情況娜汁,所有一級目錄中usr目錄最大嫂易。
var*
存放可變數(shù)據(jù),如:web頁面掐禁、ftp數(shù)據(jù)怜械、log日志、……
home
用戶家目錄傅事,存放用戶數(shù)據(jù)缕允。
lost+found
與文件系統(tǒng)有關(guān),只要是ext系列文件系統(tǒng)蹭越,所有目錄下都會有該目錄障本。存放因系統(tǒng)某些故障原因?qū)е侣窂交靵y的文件。
misc
雜項。
實戰(zhàn)功能
(1) 實現(xiàn)光盤自動掛載
CentOS6執(zhí)行命令cd /misc/cd驾霜,進(jìn)入神奇的目錄案训,即可使用光盤;
CentOS7需要先安裝autofs程序粪糙。
proc
虛擬目錄强霎,映射成內(nèi)存數(shù)據(jù),該目錄下的內(nèi)容都存在內(nèi)存蓉冈。
sys
存放硬件相關(guān)信息城舞。
實戰(zhàn)功能
(1) 識別新增硬盤
執(zhí)行命令echo '- - -' > /sys/class/scsi_host/host2/scan,觸發(fā)磁盤掃描寞酿,在不重啟系統(tǒng)的情況下識別硬盤家夺。
net
與misc相關(guān),和自動掛載相關(guān)伐弹。
selinux
與selinux安全策略相關(guān)拉馋。
三、文件系統(tǒng)
1. 識別大小寫
在Linux中掸茅,對大小寫敏不敏感由文件系統(tǒng)決定椅邓,如:標(biāo)準(zhǔn)Linux文件系統(tǒng)(ext*和xfs)對大小寫敏感,而FAT等格式對大小寫不敏感昧狮。
2. Linux支持類型
Linux默認(rèn)支持ext系列景馁、xfs和FAT系列文件系統(tǒng),不支持NTFS文件系統(tǒng)逗鸣。
四合住、文件名
1. 實戰(zhàn)功能
(1) 創(chuàng)建和刪除帶-號文件
創(chuàng)建和刪除時帶上該文件的完整路徑。
五撒璧、文件類型
1. 類型顏色
(1) 系統(tǒng)顏色配置文件
/etc/DIR_COLORS
六透葛、復(fù)制
1. 場景
(1) 1個源文件,目標(biāo)不存在
復(fù)制并改名卿樱。
(2) 1個源文件僚害,目標(biāo)存在且為文件
覆蓋目標(biāo)文件,默認(rèn)管理員用戶會提示是否覆蓋繁调,而普通用戶直接覆蓋萨蚕。
(3) 1個源文件,目標(biāo)存在且為目錄
復(fù)制到目標(biāo)目錄下并保留原文件名蹄胰。
(4) 多個文件岳遥,目標(biāo)不存在
報錯:提示目標(biāo)非目錄。
(5) 多個文件裕寨,目標(biāo)存在且為文件
報錯:提示目標(biāo)非目錄浩蓉。
(6) 多個文件派继,目標(biāo)存在且目錄
復(fù)制到目標(biāo)目錄下并保留原文件名。
(7) 目錄捻艳,目標(biāo)不存在
復(fù)制并改名驾窟。
(8) 目錄,目標(biāo)存在且為文件
報錯讯泣。
(9) 目錄纫普,目標(biāo)存在且為目錄
復(fù)制到目標(biāo)目錄下并保留原目錄名阅悍。
(10) 目錄好渠,目標(biāo)同名存在且為目錄
提示是否覆蓋目標(biāo)目錄及內(nèi)部的所有同名文件。
2. 實戰(zhàn)功能
(1) 復(fù)制字符文件或塊文件等特殊文件
cp -a
不能直接使用cp復(fù)制节视,需要使用cp -a保留文件屬性信息拳锚,否則會進(jìn)入特殊文件中逐個字節(jié)的數(shù)據(jù)復(fù)制,而不是復(fù)制文件名稱寻行。
(2) 批量復(fù)制并修改文件名
rename
cp無法實現(xiàn)批量復(fù)制并修改文件名霍掺,需要使用rename命令批量修改文件名。
(3) 備份文件
cp Source_File{,.bak}
配合文件通配符可以實現(xiàn)文件備份
七拌蜘、刪除
1. 實戰(zhàn)功能
(1) 刪除為掛載點的目錄
如果目標(biāo)目錄為掛載點杆烁,則rm -rf只能刪除該目錄下所有文件及子目錄,而作為掛載點的目錄無法被刪除简卧。
(2) 刪除根目錄下所有數(shù)據(jù)
方法1:
rm -rf / --no-preserve-root
從CentOS6開始兔魂,rm -rf /已經(jīng)不允許執(zhí)行,需要帶上--no-preserve-root參數(shù)举娩;
刪除時/proc/目錄下的文件會提示無法被刪除析校,因為/proc/不是硬盤數(shù)據(jù),是存儲在內(nèi)存铜涉,所以無法被刪除智玻。
方法2:
rm -rf /*
執(zhí)行該操作沒有任何提示信息,也不需要追加任何參數(shù)芙代,直接刪除根目錄下所有數(shù)據(jù)吊奢。
建議:
alias 'rm=mv -t /recycle/'
把rm命令定義成mv -t,刪除時只是把文件移動到指定的臨時目錄下纹烹,以便將來刪除錯誤還能還原恢復(fù)页滚。
(3) 刪除文件后無法釋放空間或刪除大文件
因為該文件在刪除時正在被占用或訪問,刪除時不會立即釋放空間滔韵。
方法1:
lsof | grep deleted
killall
執(zhí)行lsof | grep deleted命令查看當(dāng)前系統(tǒng)中被刪除但還未釋放空間的文件逻谦,然后使用killall殺掉正在占用或訪問文件的進(jìn)程。
方法2:
> Source_File
rm
直接使用>覆蓋目標(biāo)文件的內(nèi)容陪蜻,然后執(zhí)行rm刪除邦马。
建議使用這種方法處理大文件。
八、移動
1. 同一分區(qū)下移動
在同一分區(qū)移動滋将,數(shù)據(jù)在磁盤中是不動的邻悬,只是把目錄結(jié)構(gòu)調(diào)整,所以速度快随闽。
2. 不同分區(qū)下移動
不同分區(qū)移動父丰,就需要把數(shù)據(jù)慢慢移動到另一個分區(qū)上,所以速度慢掘宪;
移動相當(dāng)于先復(fù)制再刪除蛾扇,如果移動過程中死機(jī),會發(fā)現(xiàn)兩邊都存在數(shù)據(jù)魏滚。
九镀首、tree
顯示目錄樹
1. 安裝
yum install tree
rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
十、meta data
元數(shù)據(jù)鼠次,即文件屬性更哄。
1. 節(jié)點表
存放文件元數(shù)據(jù)的空間。
內(nèi)容:文件類型腥寇、權(quán)限成翩、UID、GID赦役、鏈接數(shù)麻敌、文件大小、時間戳扩劝、指向磁盤上文件的數(shù)據(jù)塊指針庸论、inode(節(jié)點編號)、有關(guān)文件的其他數(shù)據(jù)……
2. 節(jié)點編號
用于標(biāo)識文件的唯一性棒呛。
范圍:
在分區(qū)中唯一聂示,每個分區(qū)有自己的節(jié)點編號范圍。當(dāng)在分區(qū)中創(chuàng)建新文件時簇秒,系統(tǒng)會自動分配在該分區(qū)中唯一的節(jié)點編號鱼喉。數(shù)量:
不同分區(qū)最多存放的節(jié)點編號總數(shù)都不同,每創(chuàng)建1個文件就要消耗1個節(jié)點編號趋观。
(1) 實戰(zhàn)功能
創(chuàng)建文件時提示空間滿扛禽,但查看磁盤分區(qū)實際仍有空閑空間
df -i
原因是該磁盤分區(qū)下的創(chuàng)建過多小文件把所有節(jié)點編號耗盡,而不是空間滿皱坛。使用df -i命令查看磁盤分區(qū)的節(jié)點編號使用情況编曼。
3. 指針地址
指向數(shù)據(jù)所在位置;
指針指向的磁盤數(shù)據(jù)塊大小固定4KB剩辟,單位為block(在Linux中是分配文件的最小單位)掐场。
(1) 直接指針
能夠直接指向存儲的數(shù)據(jù)區(qū)域往扔,共有12個直接指針,也就是能通過直接指針直接找到的最大文件為48KB熊户。
(2) 間接指針
不指向數(shù)據(jù)塊萍膛,而是指向指針塊。指針塊里分成很多小指針塊嚷堡,小指針塊再指向真正存放數(shù)據(jù)的數(shù)據(jù)塊或其他指針塊蝗罗。
小指針塊大小固定4Byte,1個指針塊由1024個小指針塊組成蝌戒,所以一級間接指針最多可以存儲4MB數(shù)據(jù)串塑;而二級間接可以存儲4GB數(shù)據(jù);三級間接指針可以存儲4TB數(shù)據(jù)瓶颠。
4. 目錄
文件引用一個是 inode號拟赊;
人是通過文件名來引用一個文件刺桃;
一個目錄是目錄下的文件名和文件inode號之間的映射粹淋;
目錄的元數(shù)據(jù)里只存儲了關(guān)于該目錄的元數(shù)據(jù)信息,元數(shù)據(jù)的數(shù)據(jù)信息(即目錄的數(shù)據(jù)內(nèi)容)存儲了該目錄下每個文件及節(jié)點編號的對應(yīng)關(guān)系瑟慈。
(1) 訪問目錄下文件的流程
要訪問目錄下的文件桃移,需要先找到目錄的節(jié)點表,然后通過指針找到數(shù)據(jù)內(nèi)容(目錄下的文件的節(jié)點編號)葛碧,再通過文件的節(jié)點編號找到文件的節(jié)點表借杰,最后再通過節(jié)點表找到文件的真正數(shù)據(jù)內(nèi)容。
如果要訪問目錄下的文件进泼,前提就是必須要有權(quán)限訪問該目錄蔗衡,因為那些文件存放再目錄下的,如果訪問不了目錄下的內(nèi)容乳绕,就不能拿到文件的節(jié)點編號绞惦,也就進(jìn)不了文件的節(jié)點表,進(jìn)而看不到文件數(shù)據(jù)內(nèi)容洋措。
(2) 刪除文件的流程
實際是系統(tǒng)把文件的節(jié)點表刪除济蝉,但文件數(shù)據(jù)仍在磁盤上,沒有立即刪除菠发,只是在數(shù)據(jù)空間上加上標(biāo)記(該空間已空閑王滤,可以寫入內(nèi)容),但當(dāng)另一個文件使用數(shù)據(jù)塊時將被覆蓋滓鸠。
實戰(zhàn)功能
恢復(fù)被刪除的文件數(shù)據(jù)
為被刪除的文件分配新的節(jié)點編號雁乡,再指向原來的數(shù)據(jù)空間。
十一糜俗、硬鏈接與軟鏈接
1. 硬鏈接
(1) 定義
1個文件踱稍,有1個節(jié)點編號墩弯,對應(yīng)多個文件名。
(2) 創(chuàng)建
不能跨分區(qū)創(chuàng)建寞射,必須在同一設(shè)備或分區(qū)下創(chuàng)建渔工;
不支持對目錄創(chuàng)建;
一般針對不同目錄創(chuàng)建桥温。
(3) 鏈接數(shù)
文件
每創(chuàng)建一次硬鏈接后引矩,鏈接數(shù)會遞增+1;
文件要存在侵浸,至少有一個鏈接數(shù)旺韭;
當(dāng)鏈接數(shù)為0,該文件將被刪除掏觉。
目錄
目錄默認(rèn)至少有2個鏈接數(shù)区端,第一個鏈接數(shù)是目錄本身,第二個鏈接數(shù)是目錄下的.(即當(dāng)前目錄)澳腹;
如果在目錄下每創(chuàng)建一個子目錄后织盼,鏈接數(shù)會遞增+1,該鏈接數(shù)是子目錄下的..(即父目錄)酱塔。
2. 軟鏈接
(1) 定義
通過指針把符號鏈接指向另一個文件沥邻;
軟鏈接跟原始文件不是同一個文件。
(2) 創(chuàng)建
支持跨設(shè)備羊娃、分區(qū)創(chuàng)建唐全;
支持對目錄創(chuàng)建;
軟鏈接的大小跟的原始文件大小沒有任何關(guān)系蕊玷,大小是指向路徑字符串的長度(字節(jié))邮利;
軟鏈接不僅可以針對文件、目錄創(chuàng)建垃帅,還可以針對軟鏈接創(chuàng)建延届,如果原始文件丟失,則相關(guān)的軟鏈接全部失效挺智;
指定原始文件時祷愉,要么使用絕對路徑,要么使用相對于軟鏈接的路徑赦颇,不能相對原始文件當(dāng)前工作目錄二鳄;
建議使用相對路徑創(chuàng)建。
(3) 實戰(zhàn)功能
軟件媒怯、版本快速安全切換
不論軟件什么版本订讼,都創(chuàng)建同一名稱的軟鏈接,將來更新版本時扇苞,只需要把軟鏈接指向新版本路徑即可欺殿,不需要更改文件配置寄纵。
軟鏈接不能直接修改指向,需要先刪除脖苏,再重新創(chuàng)建程拭。
基于兼容性的目的
有些軟件由于版本更迭,數(shù)據(jù)遷移到新的目錄棍潘,為了照顧舊軟件恃鞋,創(chuàng)建軟鏈接指向新路徑,舊軟件通過軟鏈接路徑還能找到新版本軟件亦歉。
定義短路徑
把一些比較深的路徑定義成較短路徑恤浪,類似別名的效果。
3. 總結(jié)
(1) 硬鏈接和軟鏈接區(qū)別
本質(zhì)
硬鏈接:一個文件對應(yīng)多個名稱肴楷,是同一文件水由;
軟鏈接:一個文件對應(yīng)快捷方式,是不同文件赛蔫。
鏈接數(shù)
硬鏈接:增長鏈接數(shù)砂客;
軟鏈接:不增長鏈接數(shù)。
跨分區(qū)
硬鏈接:不支持跨分區(qū)濒募;
軟鏈接:支持跨分區(qū)鞭盟。
目錄
硬鏈接:不支持對目錄創(chuàng)建;
軟鏈接:支持對目錄創(chuàng)建瑰剃。
原始文件和鏈接文件關(guān)系
硬鏈接:原始文件和鏈接文件屬性一樣,是平等關(guān)系筝野;
軟鏈接:軟鏈接依賴于原始文件晌姚。
刪除
硬鏈接:刪除原始文件,鏈接文件不受任何影響歇竟;
軟鏈接:刪除原始文件挥唠,鏈接文件失效。
大小
硬鏈接:與原始文件一致焕议;
軟鏈接:由原始文件的路徑所決定宝磨。
十二、文件內(nèi)容
1. 文件后綴
在Linux中盅安,文件后綴對系統(tǒng)沒什么影響唤锉,只是對操作者有影響。
2. 文件類型
(1) 分析流程
判斷文件頭部信息别瞭,不同類型的文件窿祥,區(qū)別主要在于頭部。頭部會有描述蝙寨,體現(xiàn)文件的區(qū)別晒衩,即magic number嗤瞎。
3. 運(yùn)行程序格式
(1) Windows
EXE、.dll听系、.lib贝奇、……
(2) Linux
ELF、.so靠胜、.a弃秆、……
4. 實戰(zhàn)功能
(1) 通過十六進(jìn)制數(shù)工具查看文件頭部信息
hexdump -n 100 -c
因為不同類型的文件,區(qū)別主要在于頭部髓帽。