關(guān)機前常用:數(shù)據(jù)同步寫入磁盤命令sync
:
$ sync
慣用的關(guān)機命令:
$ shutdown
切換運行等級使用init
命令涧团。linux有7中運行等級徐矩,比如:
run level 0:關(guān)機
run level 3:純文本模式
run level 5:含有圖形接口模式
run level 6:重新啟動
所以如下指令也可以關(guān)機:
$ init 0
fsck
為文件系統(tǒng)檢查的命令:
$ fsck /dev/sda7
w
命令查看登錄用戶正在使用的進(jìn)程信息,可以看到root用戶有三個終端進(jìn)程:
$ w
17:25:21 up 15 min, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 ****.****.****.**** 17:09 0.00s 0.02s 0.00s w
root pts/1 ****.****.****.**** 17:24 11.00s 0.00s 0.00s -bash
root pts/2 ****.****.****.**** 17:24 17.00s 0.01s 0.01s -bash
在Linux系統(tǒng)當(dāng)中蟆盹,默認(rèn)的情況下刃泡,所有的系統(tǒng)上的賬號信息都是記錄在/etc/passwd這個文件內(nèi)的巧娱。至于個人的密碼則是記錄在/etc/shadow這個文件下碉怔。 此外,Linux所有的組名都紀(jì)錄在/etc/group內(nèi)禁添。
ls -al
可用于查看文件詳細(xì)信息:
-a
:全部(all)撮胧。列舉目錄中的全部文件,包括隱藏文件(.filename)老翘。位于這個列表的起首處的 .和 .. 依次是指父目錄和你的當(dāng)前目錄芹啥。
-l
:列舉目錄內(nèi)容的細(xì)節(jié),包括權(quán)限(模式)铺峭、所有者墓怀、組群、大小卫键、創(chuàng)建日期傀履、文件是否是到系統(tǒng)其它地方的鏈接,以及鏈接的指向莉炉。
[root@www ~]# ls -al
total 156
drwxr-x--- 4 root root 4096 Sep 8 14:06 . #第一個字符是d表示目錄
drwxr-xr-x 23 root root 4096 Sep 8 14:21 ..
-rw------- 1 root root 1474 Sep 4 18:27 anaconda-ks.cfg #第一個字符是-表示文件
-rw------- 1 root root 199 Sep 8 17:14 .bash_history
-rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout
-rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile
-rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc
-rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc
drwx------ 3 root root 4096 Sep 5 10:37 .gconf <=范例說明處
drwx------ 2 root root 4096 Sep 5 14:09 .gconfd
-rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log <=范例說明處
-rw-r--r-- 1 root root 5661 Sep 4 18:25 install.log.syslog
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 權(quán)限 ][連結(jié)][擁有者][群組][文件容量][ 修改日期 ][ 檔名 ]
注意每行第一個字符:
* 當(dāng)為[ d ]則是目錄钓账,例如[上表](http://cn.linux.vbird.org/linux_basic/0210filepermission_2.php#table2.1.1)檔名為『.gconf』的那一行;
* 當(dāng)為[ - ]則是文件絮宁,例如[上表](http://cn.linux.vbird.org/linux_basic/0210filepermission_2.php#table2.1.1)檔名為『install.log』那一行官扣;
* 若是[ l ]則表示為連結(jié)檔(link file);
* 若是[ b ]則表示為裝置文件里面的可供儲存的接口設(shè)備(可隨機存取裝置)羞福;
* 若是[ c ]則表示為裝置文件里面的串行端口設(shè)備,例如鍵盤蚯涮、鼠標(biāo)(一次性讀取裝置)治专。
關(guān)于目錄的權(quán)限(即開頭為d
),只有對該目錄具有x
權(quán)限的用戶才可以進(jìn)入遭顶。
chgrp
:改變文件所屬群組:
[root@www ~]# chgrp [-R] dirname/filename ...
選項與參數(shù):
-R : 進(jìn)行遞歸(recursive)的持續(xù)變更张峰,亦即連同次目錄下的所有文件、目錄
都更新成為這個群組之意棒旗。常常用在變更某一目錄內(nèi)所有的文件之情況喘批。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log (在/etc/group中不存在testing群組)
chgrp: invalid group name `testing' <== 發(fā)生錯誤訊息啰~找不到這個群組名~
chown
:改變文件擁有著:
[root@www ~]# chown [-R] 賬號名稱 文件或目錄
[root@www ~]# chown [-R] 賬號名稱:組名 文件或目錄
選項與參數(shù):
-R : 進(jìn)行遞歸(recursive)的持續(xù)變更,亦即連同次目錄下的所有文件都變更
范例:將install.log的擁有者改為bin這個賬號:
[root@www ~]# chown bin install.log #需要保證在/etc/passwd文件中存在bin用戶
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
范例:將install.log的擁有者與群組改回為root:
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
chmod
:改變權(quán)限:
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
chmod
命令還可以使用符號進(jìn)行權(quán)限設(shè)定铣揉,其中u, g, o來代表三種身份饶深,r,w逛拱,x代表三種權(quán)限敌厘,+,-朽合,=表示三種權(quán)限變化:
[root@www ~]# chmod u=rwx,go=rx .bashrc
# 注意喔俱两!那個 u=rwx,go=rx 是連在一起的饱狂,中間并沒有任何空格!
[root@www ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
為所有人增加寫權(quán)限:
[root@www ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod a+w .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
拿掉所有人的可執(zhí)行權(quán)限:
[root@www ~]# chmod a-x .bashrc
[root@www ~]# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc
注意宪彩,對于文件有w寫權(quán)限休讳,并不代表可以刪除文件。
權(quán)限對于目錄的關(guān)系:
r:可以查詢該目錄下的文件名數(shù)據(jù)尿孔,比如使用ls
w:建立新的文件與目錄俊柔;
刪除已經(jīng)存在的文件與目錄(不論該文件的權(quán)限為何!)
將已存在的文件或目錄進(jìn)行更名纳猫;
搬移該目錄內(nèi)的文件婆咸、目錄位置。
(可以理解為對文件名進(jìn)行操作)
x:用戶能否進(jìn)入該目錄芜辕,把該目錄變?yōu)楣ぷ髂夸浬薪尽n愃朴赾d命令
注意,沒有x權(quán)限但是有r權(quán)限表示仍然可以查看該目錄下文件名列表 (比如在可進(jìn)入的父目錄里面用ls -R侵续,但是無法查看到文件的具體內(nèi)容)
如果你在某目錄下不具有x的權(quán)限倔丈, 那么你就無法切換到該目錄下,也就無法執(zhí)行該目錄下的任何指令状蜗,即使你具有該目錄的r的權(quán)限需五。
我們的Linux在使用者登入時,都會將登錄的數(shù)據(jù)記錄在 /var/log/wtmp
那個文件內(nèi)轧坎,該文件是一個data file宏邮,他能夠透過last
這個指令讀出來! 但是使用cat
時缸血,會讀出亂碼蜜氨。
linux的目錄樹參考:http://cn.linux.vbird.org/linux_basic/0210filepermission_3.php
其中有各個目錄大概涵蓋哪些文件。
關(guān)于目錄的標(biāo)記:
. 代表此層目錄
.. 代表上一層目錄
- 代表前一個工作目錄
~ 代表『目前使用者身份』所在的家目錄
~account 代表 account 這個使用者的家目錄(account是個帳號名稱)
pwd
:顯示當(dāng)前目錄:
[root@www ~]# pwd [-P]
選項與參數(shù):
-P :顯示出確實的路徑捎泻,而非使用連結(jié) (link) 路徑飒炎。
范例:單純顯示出目前的工作目錄:
[root@www ~]# pwd
/root <== 顯示出目錄啦~
范例:顯示出實際的工作目錄,而非連結(jié)檔本身的目錄名而已
[root@www ~]# cd /var/mail <==注意笆豁,/var/mail是一個連結(jié)檔
[root@www mail]# pwd
/var/mail <==列出目前的工作目錄
[root@www mail]# pwd -P
/var/spool/mail <==怎么回事郎汪?有沒有加 -P 差很多~
[root@www mail]# ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# 看到這里應(yīng)該知道為啥了吧?因為 /var/mail 是連結(jié)檔闯狱,連結(jié)到 /var/spool/mail
# 所以煞赢,加上 pwd -P 的選項后,會不以連結(jié)檔的數(shù)據(jù)顯示扩氢,而是顯示正確的完整路徑案邸!
mkdir
創(chuàng)建目錄命令:
[root@www tmp]# mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 沒辦法直接創(chuàng)建此目錄啊朦肘!
[root@www tmp]# mkdir -p test1/test2/test3/test4
# 加了這個 -p 的選項饭弓,可以自行幫你創(chuàng)建多層目錄!
范例:創(chuàng)建權(quán)限為rwx--x--x的目錄
[root@www tmp]# mkdir -m 711 test2
[root@www tmp]# ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
# 仔細(xì)看上面的權(quán)限部分媒抠,如果沒有加上 -m 來強制配置屬性弟断,系統(tǒng)會使用默認(rèn)屬性。
mv
:移動文件(剪切):
$ mv b.txt test #把當(dāng)前目錄下b.txt文件移動到當(dāng)前目錄下的test目錄中
cp
:文件復(fù)制:
范例一:用root身份趴生,將家目錄下的 .bashrc 復(fù)制到 /tmp 下阀趴,并更名為 bashrc
[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆蓋,y為覆蓋
# 重復(fù)作兩次動作苍匆,由於 /tmp 底下已經(jīng)存在 bashrc 了刘急,加上 -i 選項后,
# 則在覆蓋前會詢問使用者是否確定浸踩!可以按下 n 或者 y 來二次確認(rèn)呢叔汁!
范例二:變換目錄到/tmp,并將/var/log/wtmp復(fù)制到/tmp且觀察屬性:
[root@www ~]# cd /tmp
[root@www tmp]# cp /var/log/wtmp . <==想要復(fù)制到目前的目錄检碗,最后的 . 不要忘
[root@www tmp]# ls -l /var/log/wtmp wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-r--r-- 1 root root 96384 Sep 24 14:06 wtmp #通常据块,目的文件的擁有者就是操作者
# 注意上面的特殊字體,在不加任何選項的情況下折剃,文件的某些屬性/權(quán)限會改變另假;
# 這是個很重要的特性!要注意喔怕犁!還有,連文件創(chuàng)建的時間也不一樣了奏甫!
# 那如果你想要將文件的所有特性都一起復(fù)制過來該怎辦苟耻?可以加上 -a 喔!如下所示:
[root@www tmp]# cp -a /var/log/wtmp wtmp_2
[root@www tmp]# ls -l /var/log/wtmp wtmp_2
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 /var/log/wtmp
-rw-rw-r-- 1 root utmp 96384 Sep 24 11:54 wtmp_2
# 了了吧扶檐!整個數(shù)據(jù)特性完全一模一樣ㄟ!真是不賴~這就是 -a 的特性胁艰!
范例三:復(fù)制 /etc/ 這個目錄下的所有內(nèi)容到 /tmp 底下
[root@www tmp]# cp /etc/ /tmp
cp: omitting directory `/etc' <== 如果是目錄則不能直接復(fù)制款筑,要加上 -r 的選項
[root@www tmp]# cp -r /etc/ /tmp
# 還是要再次的強調(diào)喔! -r 是可以復(fù)制目錄腾么,但是奈梳,文件與目錄的權(quán)限可能會被改變
# 所以,也可以利用『 cp -a /etc /tmp 』來下達(dá)命令喔解虱!尤其是在備份的情況下攘须!
范例四:將范例一復(fù)制的 bashrc 創(chuàng)建一個連結(jié)檔 (symbolic link)
[root@www tmp]# ls -l bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:02 bashrc <==先觀察一下文件情況
[root@www tmp]# cp -s bashrc bashrc_slink
[root@www tmp]# cp -l bashrc bashrc_hlink
[root@www tmp]# ls -l bashrc*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc <==與原始文件不太一樣了!
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc_hlink #硬鏈接
lrwxrwxrwx 1 root root 6 Sep 24 14:20 bashrc_slink -> bashrc #符號鏈接
范例五:若 ~/.bashrc 比 /tmp/bashrc 新才復(fù)制過來
[root@www tmp]# cp -u ~/.bashrc /tmp/bashrc
# 這個 -u 的特性殴泰,是在目標(biāo)文件與來源文件有差異時于宙,才會復(fù)制的浮驳。
# 所以,比較常被用於『備份』的工作當(dāng)中喔捞魁! ^_^
范例六:將范例四造成的 bashrc_slink 復(fù)制成為 bashrc_slink_1 與bashrc_slink_2
[root@www tmp]# cp bashrc_slink bashrc_slink_1
[root@www tmp]# cp -d bashrc_slink bashrc_slink_2
[root@www tmp]# ls -l bashrc bashrc_slink*
-rw-r--r-- 2 root root 176 Sep 24 14:02 bashrc
lrwxrwxrwx 1 root root 6 Sep 24 14:20 bashrc_slink -> bashrc
-rw-r--r-- 1 root root 176 Sep 24 14:32 bashrc_slink_1 <==與原始文件相同
lrwxrwxrwx 1 root root 6 Sep 24 14:33 bashrc_slink_2 -> bashrc <==是連結(jié)檔至会!
# 這個例子也是很有趣喔!原本復(fù)制的是連結(jié)檔谱俭,但是卻將連結(jié)檔的實際文件復(fù)制過來了
# 也就是說奉件,如果沒有加上任何選項時,cp復(fù)制的是原始文件昆著,而非連結(jié)檔的屬性县貌!
# 若要復(fù)制連結(jié)檔的屬性,就得要使用 -d 的選項了凑懂!如 bashrc_slink_2 所示煤痕。
范例七:將家目錄的 .bashrc 及 .bash_history 復(fù)制到 /tmp 底下
[root@www tmp]# cp ~/.bashrc ~/.bash_history /tmp
# 可以將多個數(shù)據(jù)一次復(fù)制到同一個目錄去!最后面一定是目錄征候!
如果文件名以-
開頭:
#刪除文件-aaa-
rm -aaa- #會認(rèn)為-aaa-是選項
解決方法有兩種:
rm ./-aaa-
rm -- -aaa-
取得路徑的文件名稱和目錄名稱:
[root@www ~]# basename /etc/sysconfig/network
network <== 很簡單杭攻!就取得最后的檔名~
[root@www ~]# dirname /etc/sysconfig/network
/etc/sysconfig <== 取得的變成目錄名了!
mv
:移動文件疤坝、目錄兆解,或更名(rename
命令也可以更名):
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
選項與參數(shù):
-f :force 強制的意思,如果目標(biāo)文件已經(jīng)存在跑揉,不會詢問而直接覆蓋锅睛;
-i :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋历谍!
-u :若目標(biāo)文件已經(jīng)存在现拒,且 source 比較新,才會升級 (update)
范例一:復(fù)制一文件望侈,創(chuàng)建一目錄印蔬,將文件移動到目錄中
[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest
# 將某個文件移動到某個目錄去,就是這樣做脱衙!
范例二:將剛剛的目錄名稱更名為 mvtest2
[root@www tmp]# mv mvtest mvtest2 <== 這樣就更名了侥猬!簡單~
# 其實在 Linux 底下還有個有趣的命令,名稱為 rename 捐韩,
# 該命令專職進(jìn)行多個檔名的同時更名退唠,并非針對單一檔名變更,與mv不同荤胁。請man rename瞧预。
范例三:再創(chuàng)建兩個文件,再全部移動到 /tmp/mvtest2 當(dāng)中
[root@www tmp]# cp ~/.bashrc bashrc1
[root@www tmp]# cp ~/.bashrc bashrc2
[root@www tmp]# mv bashrc1 bashrc2 mvtest2
# 注意到這邊,如果有多個來源文件或目錄,則最后一個目標(biāo)檔一定是『目錄裁良!』
# 意思是說葱跋,將所有的數(shù)據(jù)移動到該目錄的意思掂碱!
查看文件的命令:
cat 由第一行開始顯示文件內(nèi)容
tac 從最后一行開始顯示慎冤,可以看出 tac 是 cat 的倒著寫疼燥!
nl 顯示的時候,順道輸出行號蚁堤!
more 一頁一頁的顯示文件內(nèi)容
less 與 more 類似醉者,但是比 more 更好的是,他可以往前翻頁披诗!
head 只看頭幾行
tail 只看尾巴幾行
od 以二進(jìn)位的方式讀取文件內(nèi)容撬即!
man
這個命令就是呼叫less
來顯示說明文件的內(nèi)容的。
umask
:目前使用者在創(chuàng)建文件或目錄時候的權(quán)限默認(rèn)值:
[root@www ~]# umask
0022 <==與一般權(quán)限有關(guān)的是后面三個數(shù)字呈队!
[root@www ~]# umask -S
u=rwx,g=rx,o=rx
其中剥槐,0022
的后三位對應(yīng)的是需要減去的值,減完以后就是755掂咒。
而在默認(rèn)情況下才沧,即umask為0000時:
若使用者創(chuàng)建為『文件』則默認(rèn)『沒有可運行( x )權(quán)限』,亦即只有 rw 這兩個項目绍刮,也就是最大為 666 分温圆,默認(rèn)權(quán)限如下:
-rw-rw-rw-
若使用者創(chuàng)建為『目錄』,則由于 x 與是否可以進(jìn)入此目錄有關(guān)孩革,因此默認(rèn)為所有權(quán)限均開放岁歉,亦即為 777 分,默認(rèn)權(quán)限如下:
drwxrwxrwx
所以在此時如果umask值為0022膝蜈,則:
創(chuàng)建文件時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
創(chuàng)建目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x
[root@www ~]# umask
0022
[root@www ~]# touch test1
[root@www ~]# mkdir test2
[root@www ~]# ll
-rw-r--r-- 1 root root 0 Sep 27 00:25 test1
drwxr-xr-x 2 root root 4096 Sep 27 00:25 test2
如果我希望創(chuàng)建的文件可以被同組的用戶編輯锅移,則可以直接修改umask:
[root@www ~]# umask 002
[root@www ~]# touch test3
[root@www ~]# mkdir test4
[root@www ~]# ll
-rw-rw-r-- 1 root root 0 Sep 27 00:36 test3
drwxrwxr-x 2 root root 4096 Sep 27 00:36 test4
chattr
:配置文件隱藏屬性:
[root@www ~]# chattr [+-=][ASacdistu] 文件或目錄名稱
+ :添加某一個特殊參數(shù),其他原本存在參數(shù)則不動饱搏。
- :移除某一個特殊參數(shù)非剃,其他原本存在參數(shù)則不動。
= :配置一定推沸,且僅有后面接的參數(shù)
a :當(dāng)配置 a 之后备绽,這個文件將只能添加數(shù)據(jù)券坞,而不能刪除也不能修改數(shù)據(jù),只有root
才能配置這個屬性肺素。
i :他可以讓一個文件『不能被刪除恨锚、改名、配置連結(jié)也無法寫入或新增數(shù)據(jù)倍靡!』對于系統(tǒng)安全性有相當(dāng)大的助益猴伶!只有 root 能配置此屬性
范例:請嘗試到/tmp底下創(chuàng)建文件,并加入 i 的參數(shù)塌西,嘗試刪除看看他挎。
[root@www ~]# cd /tmp
[root@www tmp]# touch attrtest <==創(chuàng)建一個空文件
[root@www tmp]# chattr +i attrtest <==給予 i 的屬性
[root@www tmp]# rm attrtest <==嘗試刪除看看
rm: remove write-protected regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted <==操作不許可
# 看到了嗎?呼呼雨让!連 root 也沒有辦法將這個文件刪除呢雇盖!趕緊解除配置!
范例:請將該文件的 i 屬性取消栖忠!
[root@www tmp]# chattr -i attrtest
lsattr
:顯示文件隱藏屬性
[root@www ~]# lsattr [-adR] 文件或目錄
選項與參數(shù):
-a :將隱藏檔的屬性也秀出來崔挖;
-d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內(nèi)的檔名庵寞;
-R :連同子目錄的數(shù)據(jù)也一并列出來狸相!
[root@www tmp]# chattr +aij attrtest
[root@www tmp]# lsattr attrtest
----ia---j--- attrtest
有些文件的權(quán)限比較特殊:
[root@www ~]# ls -ld /tmp ; ls -l /usr/bin/passwd
drwxrwxrwt 7 root root 4096 Sep 27 18:23 /tmp
-rwsr-xr-x 1 root root 22984 Jan 7 2007 /usr/bin/passwd
比如/usr/bin/passwd文件中出現(xiàn)在所有者位置上的s
權(quán)限,表示Set UID權(quán)限:
SUID 權(quán)限僅對二進(jìn)位程序(binary program)有效捐川;
運行者對於該程序需要具有 x 的可運行權(quán)限脓鹃;
本權(quán)限僅在運行該程序的過程中有效 (run-time);
運行者將具有該程序擁有者 (owner) 的權(quán)限古沥。
另外瘸右,SUID 僅可用在binary program 上, 不能夠用在 shell script 上面岩齿!這是因為 shell script 只是將很多的 binary 運行檔叫進(jìn)來運行而已太颤!所以 SUID 的權(quán)限部分,還是得要看 shell script 呼叫進(jìn)來的程序的配置盹沈, 而不是 shell script 本身龄章。當(dāng)然,SUID 對于目錄也是無效的~這點要特別留意乞封。
相似的做裙,還有Set GID權(quán)限:
[root@www ~]# ls -l /usr/bin/locate
-rwx--s--x 1 root slocate 23856 Mar 15 2007 /usr/bin/locate
該權(quán)限對于文件或者目錄均有效。對于文件而言:
SGID 對二進(jìn)位程序有用肃晚;
程序運行者對於該程序來說锚贱,需具備 x 的權(quán)限;
運行者在運行的過程中將會獲得該程序群組的支持关串!
對于目錄而言:
使用者若對於此目錄具有 r 與 x 的權(quán)限時拧廊,該使用者能夠進(jìn)入此目錄杂穷;
使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
用途:若使用者在此目錄下具有 w 的權(quán)限(可以新建文件)卦绣,則使用者所創(chuàng)建的新文件,該新文件的群組與此目錄的群組相同飞蚓。
Sticky Bit權(quán)限滤港,即之前\tmp
文件最后的t權(quán)限,只能運用于目錄:
當(dāng)使用者對於此目錄具有 w, x 權(quán)限趴拧,亦即具有寫入的權(quán)限時溅漾;
當(dāng)使用者在該目錄下創(chuàng)建文件或目錄時,僅有自己與 root 才有權(quán)力刪除該文件
SUID/SGID/SBIT 權(quán)限配置:
在3位權(quán)限描述符之前添加:
4 為 SUID
2 為 SGID
1 為 SBIT
比如:
[root@www ~]# cd /tmp
[root@www tmp]# touch test <==創(chuàng)建一個測試用空檔
[root@www tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的權(quán)限
-rwsr-xr-x 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的權(quán)限
-rwsr-sr-x 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能著榴!
-rwxr-xr-t 1 root root 0 Sep 29 03:06 test
[root@www tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 權(quán)限
-rwSrwSrwT 1 root root 0 Sep 29 03:06 test
注意最后一個S和T都是大寫添履,原因在于權(quán)限位7666,三類用戶均不可執(zhí)行脑又,那么S和T代表的都為空暮胧。
也可以通過符號設(shè)定權(quán)限:
# 配置權(quán)限成為 -rws--x--x 的模樣:
[root@www tmp]# chmod u=rwxs,go=x test; ls -l test
-rws--x--x 1 root root 0 Aug 18 23:47 test
# 承上,加上 SGID 與 SBIT 在上述的文件權(quán)限中问麸!
[root@www tmp]# chmod g+s,o+t test; ls -l test
-rws--s--t 1 root root 0 Aug 18 23:47 test
file
:判斷文件格式:
[root@www ~]# file ~/.bashrc
/root/.bashrc: ASCII text <==告訴我們是 ASCII 的純文字檔巴浴!
[root@www ~]# file /usr/bin/passwd
/usr/bin/passwd: setuid ELF 32-bit LSB executable, Intel 80386, version 1
(SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for
GNU/Linux 2.6.9, stripped
# 運行檔的數(shù)據(jù)可就多的不得了严卖!包括這個文件的 suid 權(quán)限席舍、兼容於 Intel 386
# 等級的硬件平臺、使用的是 Linux 核心 2.6.9 的動態(tài)函式庫連結(jié)等等哮笆。
[root@www ~]# file /var/lib/mlocate/mlocate.db
/var/lib/mlocate/mlocate.db: data <== 這是 data 文件来颤!
which
搜索命令:
[root@www ~]# which [-a] command
選項或參數(shù):
-a :將所有由 PATH 目錄中可以找到的命令均列出,而不止第一個被找到的命令名稱
范例一:分別用root與一般帳號搜尋 ifconfig 這個命令的完整檔名
[root@www ~]# which ifconfig
/sbin/ifconfig <==用 root 可以找到正確的運行檔名喔稠肘!
注意福铅,不同的用戶因為PATH不同,可能搜索到的命令也不一樣启具。
whereis
:查找數(shù)據(jù)庫中的文件本讥,比find
快:
[root@www ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
locate
:依據(jù) /var/lib/mlocate
內(nèi)的數(shù)據(jù)庫記載,找出使用者輸入的關(guān)鍵字檔名:
[root@www ~]# locate [-ir] keyword
選項與參數(shù):
-i :忽略大小寫的差異鲁冯;
-r :后面可接正規(guī)表示法的顯示方式
范例一:找出系統(tǒng)中所有與 passwd 相關(guān)的檔名
[root@www ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/news/passwd.nntp
/etc/pam.d/passwd
....(底下省略)....
所以使用前需要更新數(shù)據(jù)庫(該數(shù)據(jù)庫一段時間也會自動更新):
updatedb
:根據(jù) /etc/updatedb.conf
的配置去搜尋系統(tǒng)硬盤內(nèi)的檔名拷沸,并升級/var/lib/mlocate
內(nèi)的數(shù)據(jù)庫文件。
find
:查找文件命令:
-uid n :n 為數(shù)字薯演,這個數(shù)字是使用者的帳號 ID撞芍,亦即 UID ,這個 UID 是記錄在/etc/passwd 里面與帳號名稱對應(yīng)的數(shù)字跨扮。
-gid n :n 為數(shù)字序无,這個數(shù)字是群組名稱的 ID验毡,亦即 GID,這個 GID 記錄在/etc/group帝嗡。
-user name :name 為使用者帳號名稱晶通。
-group name:name 為群組名稱。
-name filename:搜尋文件名稱為 filename 的文件哟玷;
-type TYPE :搜尋文件的類型為 TYPE 的狮辽,類型主要有:一般正規(guī)文件 (f),
裝置文件 (b, c), 目錄 (d), 連結(jié)檔 (l), socket (s),
及 FIFO (p) 等屬性。
-perm mode :搜尋文件權(quán)限『剛好等於』 mode 的文件巢寡,這個 mode 為類似 chmod
的屬性值喉脖,舉例來說, -rwsr-xr-x 的屬性為 4755 抑月!
-perm -mode :搜尋文件權(quán)限『必須要全部囊括 mode 的權(quán)限』的文件树叽,舉例來說,
我們要搜尋 -rwxr--r-- 谦絮,亦即 0744 的文件题诵,使用 -perm -0744,
當(dāng)一個文件的權(quán)限為 -rwsr-xr-x 挨稿,亦即 4755 時仇轻,也會被列出來,
因為 -rwsr-xr-x 的屬性已經(jīng)囊括了 -rwxr--r-- 的屬性了奶甘。
-perm +mode :搜尋文件權(quán)限『包含任一 mode 的權(quán)限』的文件篷店,舉例來說,我們搜尋
-rwxr-xr-x 臭家,亦即 -perm +755 時疲陕,但一個文件屬性為 -rw-------
也會被列出來,因為他有 -rw.... 的屬性存在钉赁!
比如:
范例五:找出檔名為 passwd 這個文件
[root@www ~]# find / -name passwd
# 利用這個 -name 可以搜尋檔名疤阊辍!
#搭配通配符
[root@www ~]# find /etc -name '*httpd*'
關(guān)于權(quán)限的一個例子:
#以root用戶創(chuàng)建/tmp/test你踩,對于該目錄只賦予others用戶r權(quán)限:
#以其他用戶登錄后诅岩,無法進(jìn)入test目錄,但是可以:
test@myblog:/tmp$ ls test
aaa.txt
test@myblog:/tmp$ cat test/aaa.txt
cat: test/aaa.txt: Permission denied
#以root用戶對于該目錄只賦予others只賦予x權(quán)限(刪除r權(quán)限):
test@myblog:/tmp/test$ ls #有x權(quán)限所以可以進(jìn)入該目錄
ls: cannot open directory '.': Permission denied #沒有r權(quán)限所以無法ls
test@myblog:/tmp/test$ cat aaa.txt #若是指定該文件名带膜,則可以讀取文件內(nèi)容(前提是aaa.txt有r權(quán)限)
aaa
linux的inode/block文件存取系統(tǒng):
對比一下FAT文件存取系統(tǒng)(windows 98 以前的微軟操作系統(tǒng)的文件存取系統(tǒng)):
linux的ext2文件系統(tǒng):
df
:獲取目前掛載的裝置:
范例:找出我的根目錄磁盤文件名吩谦,并觀察文件系統(tǒng)的相關(guān)信息
[root@www ~]# df <==這個命令可以叫出目前掛載的裝置
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hdc2 9920624 3822848 5585708 41% / <==就是這個光!
/dev/hdc3 4956316 141376 4559108 4% /home
/dev/hdc1 101086 11126 84741 12% /boot
tmpfs 371332 0 371332 0% /dev/shm
dumpe2fs
:顯示ext2膝藕、ext3式廷、ext4文件系統(tǒng)的超級快和塊組信息:
[root@www ~]# dumpe2fs /dev/hdc2
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name: /1 <==這個是文件系統(tǒng)的名稱(Label)
Filesystem features: has_journal ext_attr resize_inode dir_index
filetype needs_recovery sparse_super large_file
Default mount options: user_xattr acl <==默認(rèn)掛載的參數(shù)
Filesystem state: clean <==這個文件系統(tǒng)是沒問題的(clean)
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 2560864 <==inode的總數(shù)
Block count: 2560359 <==block的總數(shù)
Free blocks: 1524760 <==還有多少個 block 可用
Free inodes: 2411225 <==還有多少個 inode 可用
First block: 0
Block size: 4096 <==每個 block 的大小啦!
Filesystem created: Fri Sep 5 01:49:20 2008
Last mount time: Mon Sep 22 12:09:30 2008
Last write time: Mon Sep 22 12:09:30 2008
Last checked: Fri Sep 5 01:49:20 2008
First inode: 11
Inode size: 128 <==每個 inode 的大小
Journal inode: 8 <==底下這三個與下一小節(jié)有關(guān)
Journal backup: inode blocks
Journal size: 128M
Group 0: (Blocks 0-32767) <==第一個 data group 內(nèi)容, 包含 block 的啟始/結(jié)束號碼
Primary superblock at 0, Group descriptors at 1-1 <==超級區(qū)塊在 0 號 block
Reserved GDT blocks at 2-626
Block bitmap at 627 (+627), Inode bitmap at 628 (+628)
Inode table at 629-1641 (+629) <==inode table 所在的 block
0 free blocks, 32405 free inodes, 2 directories <==所有 block 都用完了芭挽!
Free blocks:
Free inodes: 12-32416 <==剩余未使用的 inode 號碼
Group 1: (Blocks 32768-65535)
....(底下省略)....
當(dāng)我們在 Linux 下的 ext2 文件系統(tǒng)創(chuàng)建一個目錄時滑废, ext2 會分配一個 inode 與至少一塊 block 給該目錄蝗肪。其中,inode 記錄該目錄的相關(guān)權(quán)限與屬性蠕趁,并可記錄分配到的那塊 block 號碼薛闪; 而 block 則是記錄在這個目錄下的文件名與該文件名占用的 inode 號碼數(shù)據(jù)。所以說新增/刪除/更名文件名與目錄的 w 權(quán)限有關(guān)俺陋,因為文件名存儲在目錄的block而非inode中逛绵。
df
:列出文件系統(tǒng)的整體磁盤使用量;(df
的例子之前有了)
du
:評估文件系統(tǒng)的磁盤使用量(常用在推估目錄所占容量):
范例一:列出目前目錄下的所有文件容量
[root@www ~]# du
8 ./test4 <==每個目錄都會列出來
8 ./test2
....中間省略....
12 ./.gconfd <==包括隱藏文件的目錄
220 . <==這個目錄(.)所占用的總量
# 直接輸入 du 沒有加任何選項時倔韭,則 du 會分析『目前所在目錄』
# 的文件與目錄所占用的硬盤空間。但是瓢对,實際顯示時寿酌,僅會顯示目錄容量(不含文件),
# 因此 . 目錄有很多文件沒有被列出來硕蛹,所以全部的目錄相加不會等于 . 的容量喔醇疼!
# 此外,輸出的數(shù)值數(shù)據(jù)為 1K 大小的容量單位法焰。
范例二:同范例一秧荆,但是將文件的容量也列出來
[root@www ~]# du -a
12 ./install.log.syslog <==有文件的列表了
8 ./.bash_logout
8 ./test4
8 ./test2
....中間省略....
12 ./.gconfd
220 .
實體鏈接:
實體鏈接指的是兩個文件名指向同一個inode(在下面的例子中是1912701),那其實就是指向同一個block:
[root@www ~]# ln /etc/crontab . <==創(chuàng)建實體鏈接的命令
[root@www ~]# ll -i /etc/crontab /root/crontab
1912701 -rw-r--r-- 2 root root 255 Jan 6 2007 /etc/crontab
1912701 -rw-r--r-- 2 root root 255 Jan 6 2007 /root/crontab
符號鏈接:
可以看到兩個文件的inode是不一樣的埃仪,Symbolic link 就是在創(chuàng)建一個獨立的文件乙濒,而這個文件會讓數(shù)據(jù)的讀取指向他 link 的那個文件的檔名。所以可以看到/root/crontab2
的文件大小為12bytes卵蛉,正好其指向的/etc/crontab
文件名位12字符:
[root@www ~]# ln -s /etc/crontab crontab2
[root@www ~]# ll -i /etc/crontab /root/crontab2
1912701 -rw-r--r-- 2 root root 255 Jan 6 2007 /etc/crontab
654687 lrwxrwxrwx 1 root root 12 Oct 22 13:58 /root/crontab2 -> /etc/crontab
ln
:制作鏈接:
[root@www ~]# ln [-sf] 來源文件 目標(biāo)文件
選項與參數(shù):
-s :如果不加任何參數(shù)就進(jìn)行連結(jié)颁股,那就是hard link,至于 -s 就是symbolic link
-f :如果 目標(biāo)文件 存在時傻丝,就主動的將目標(biāo)文件直接移除后再創(chuàng)建甘有!
觀察創(chuàng)建目錄后鏈接數(shù)的變化:
[root@www ~]# ls -ld /tmp
drwxrwxrwt 5 root root 4096 Oct 22 14:22 /tmp
[root@www ~]# mkdir /tmp/testing1
[root@www ~]# ls -ld /tmp
drwxrwxrwt 6 root root 4096 Oct 22 14:37 /tmp #多了一個 /tmp/testing/..
[root@www ~]# ls -ld /tmp/testing1
drwxr-xr-x 2 root root 4096 Oct 22 14:37 /tmp/testing1 #多了/tmp/testing1和/tmp/testing1/.
mount
:將文件系統(tǒng)掛載到某個目錄上:
范例一:用默認(rèn)的方式,將剛剛創(chuàng)建的 /dev/hdc6 掛載到 /mnt/hdc6 上面葡缰!
[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
.....中間省略.....
/dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6
# 看起來亏掀,真的有掛載!且文件大小約為 2GB 左右啦泛释!
范例二:觀察目前『已掛載』的文件系統(tǒng)滤愕,包含各文件系統(tǒng)的Label名稱
[root@www ~]# mount -l
/dev/hdc2 on / type ext3 (rw) [/1] #表示/dev/hdc2文件系統(tǒng)掛載到根目錄/下,文件系統(tǒng)類型為ext3
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hdc3 on /home type ext3 (rw) [/home]
/dev/hdc1 on /boot type ext3 (rw) [/boot]
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/hdc6 on /mnt/hdc6 type ext3 (rw) [vbird_logical]
# 除了實際的文件系統(tǒng)外胁澳,很多特殊的文件系統(tǒng)(proc/sysfs...)也會被顯示出來该互!
# 值得注意的是,加上 -l 選項可以列出如上特殊字體的標(biāo)頭(label)喔
mount
:也可以用來掛載目錄:
范例七:將 /home 這個目錄暫時掛載到 /mnt/home 底下(需要--bind):
[root@www ~]# mkdir /mnt/home
[root@www ~]# mount --bind /home /mnt/home
[root@www ~]# ls -lid /home/ /mnt/home
2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home/
2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /mnt/home
[root@www ~]# mount -l
/home on /mnt/home type none (rw,bind) #單純的輸入 mount 會顯示目前掛載的信息韭畸。加上 -l 可增列 Label 名稱
unmount
:將裝置文件卸除
范例八:將本章之前自行掛載的文件系統(tǒng)全部卸除:
[root@www ~]# mount
.....前面省略.....
/dev/hdc6 on /mnt/hdc6 type ext3 (rw)
/dev/hdd on /media/cdrom type iso9660 (rw)
/dev/sda1 on /mnt/flash type vfat (rw,iocharset=cp950)
/home on /mnt/home type none (rw,bind)
# 先找一下已經(jīng)掛載的文件系統(tǒng)宇智,如上所示蔓搞,特殊字體即為剛剛掛載的裝置啰!
[root@www ~]# umount /dev/hdc6 <==用裝置文件名來卸除
[root@www ~]# umount /media/cdrom <==用掛載點來卸除
[root@www ~]# umount /mnt/flash <==因為掛載點比較好記憶随橘!
[root@www ~]# umount /dev/fd0 <==用裝置文件名較好記喂分!
[root@www ~]# umount /mnt/home <==一定要用掛載點!因為掛載的是目錄
啟動時自動掛載机蔗,是由/etc/fstab
這個配置文件控制:
[root@www ~]# cat /etc/fstab
# Device Mount point filesystem parameters dump fsck
LABEL=/1 / ext3 defaults 1 1
LABEL=/home /home ext3 defaults 1 2
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hdc5 swap swap defaults 0 0
# 上述特殊字體的部分與實際磁盤有關(guān)蒲祈!其他則是虛擬文件系統(tǒng)或
# 與內(nèi)存置換空間 (swap) 有關(guān)。
如何掛載本機下載好的映像文件(使用mount -o loop
):
[root@www ~]# ll -h /root/centos5.2_x86_64.iso
-rw-r--r-- 1 root root 4.3G Oct 27 17:34 /root/centos5.2_x86_64.iso
# 看到上面的結(jié)果吧萝嘁!這個文件就是映象檔梆掸,文件非常的大吧!
[root@www ~]# mkdir /mnt/centos_dvd
[root@www ~]# mount -o loop /root/centos5.2_x86_64.iso /mnt/centos_dvd
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/root/centos5.2_x86_64.iso
4493152 4493152 0 100% /mnt/centos_dvd
# 就是這個項目牙言! .iso 映象文件內(nèi)的所有數(shù)據(jù)可以在 /mnt/centos_dvd 看到酸钦!
[root@www ~]# ll /mnt/centos_dvd
total 584
drwxr-xr-x 2 root root 522240 Jun 24 00:57 CentOS <==瞧!就是DVD的內(nèi)容霸弁鳌卑硫!
-rw-r--r-- 8 root root 212 Nov 21 2007 EULA
-rw-r--r-- 8 root root 18009 Nov 21 2007 GPL
drwxr-xr-x 4 root root 2048 Jun 24 00:57 images
.....底下省略.....
[root@www ~]# umount /mnt/centos_dvd/
# 測試完成!記得將數(shù)據(jù)給他卸除蚕断!
例子:創(chuàng)建大文件并進(jìn)行本機掛載:
首先創(chuàng)建大文件/home/loopdev
:
[root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512
512+0 records in <==讀入 512 筆數(shù)據(jù)
512+0 records out <==輸出 512 筆數(shù)據(jù)
536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s
# 這個命令的簡單意義如下:
# if 是 input file 欢伏,輸入文件。那個 /dev/zero 是會一直輸出 0 的裝置亿乳!
# of 是 output file 硝拧,將一堆零寫入到后面接的文件中。
# bs 是每個 block 大小葛假,就像文件系統(tǒng)那樣的 block 意義河爹;
# count 則是總共幾個 bs 的意思。
[root@www ~]# ll -h /home/loopdev
-rw-r--r-- 1 root root 512M Oct 28 02:29 /home/loopdev
接著對其格式化:
[root@www ~]# mkfs -t ext3 /home/loopdev
mke2fs 1.39 (29-May-2006)
/home/loopdev is not a block special device.
Proceed anyway? (y,n) y <==由于不是正常的裝置桐款,所以這里會提示你咸这!
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
.....以下省略.....
最后再掛載:
[root@www ~]# mount -o loop /home/loopdev /media/cdrom/
[root@www ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/home/loopdev 507748 18768 462766 4% /media/cdrom
swap:存儲空間的一片區(qū)域。當(dāng)內(nèi)存不夠時魔眨,會將內(nèi)存中暫時不用的數(shù)據(jù)移到swap中媳维。
集中壓縮文件的擴展名:
*.Z compress 程序壓縮的文件;
*.gz gzip 程序壓縮的文件遏暴;
*.bz2 bzip2 程序壓縮的文件侄刽;
*.tar tar 程序打包的數(shù)據(jù),并沒有壓縮過朋凉;
*.tar.gz tar 程序打包的文件州丹,其中并且經(jīng)過 gzip 的壓縮
*.tar.bz2 tar 程序打包的文件,其中并且經(jīng)過 bzip2 的壓縮
gzip
:壓縮與解壓縮
zcat
:讀取純文字檔被壓縮后的壓縮檔
[root@www ~]# gzip [-cdtv#] 檔名
[root@www ~]# zcat 檔名.gz
選項與參數(shù):
-c :將壓縮的數(shù)據(jù)輸出到螢?zāi)簧希赏高^數(shù)據(jù)流重導(dǎo)向來處理墓毒;
-d :解壓縮的參數(shù)吓揪;
-t :可以用來檢驗一個壓縮檔的一致性~看看文件有無錯誤廓啊;
-v :可以顯示出原文件/壓縮文件的壓縮比等資訊盔沫;
-# :壓縮等級憔涉,-1 最快仔拟,但是壓縮比最差、-9 最慢迄委,但是壓縮比最好谋梭!默認(rèn)是 -6
范例一:將 /etc/man.config 復(fù)制到 /tmp 互广,并且以 gzip 壓縮
[root@www ~]# cd /tmp
[root@www tmp]# cp /etc/man.config .
[root@www tmp]# gzip -v man.config
man.config: 56.1% -- replaced with man.config.gz
[root@www tmp]# ll /etc/man.config /tmp/man*
-rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config
-rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz <==gzip壓縮比較佳
范例二:由於 man.config 是文字檔踪栋,請將范例一的壓縮檔的內(nèi)容讀出來焙格!
[root@www tmp]# zcat man.config.gz
# 由於 man.config 這個原本的文件是是文字檔,因此我們可以嘗試使用 zcat 去讀纫亩肌间螟!
# 此時螢?zāi)簧蠒@示 man.config.gz 解壓縮之后的文件內(nèi)容!
范例三:將范例一的文件解壓縮
[root@www tmp]# gzip -d man.config.gz
# 不要使用 gunzip 這個命令损肛,不好背!使用 gzip -d 來進(jìn)行解壓縮荣瑟!
# 與 gzip 相反治拿, gzip -d 會將原本的 .gz 刪除,產(chǎn)生原本的 man.config 文件笆焰。
bzip2
:壓縮比比gzip好劫谅,格式差不多:
[root@www ~]# bzip2 [-cdkzv#] 檔名
[root@www ~]# bzcat 檔名.bz2
選項與參數(shù):
-c :將壓縮的過程產(chǎn)生的數(shù)據(jù)輸出到螢?zāi)簧希?-d :解壓縮的參數(shù)
-k :保留原始文件,而不會刪除原始的文件喔嚷掠!
-z :壓縮的參數(shù)
-v :可以顯示出原文件/壓縮文件的壓縮比等資訊捏检;
-# :與 gzip 同樣的,都是在計算壓縮比的參數(shù)不皆, -9 最佳贯城, -1 最快!
范例一:將剛剛的 /tmp/man.config 以 bzip2 壓縮
[root@www tmp]# bzip2 -z man.config
# 此時 man.config 會變成 man.config.bz2 霹娄!
范例二:將范例一的文件內(nèi)容讀出來能犯!
[root@www tmp]# bzcat man.config.bz2
# 此時螢?zāi)簧蠒@示 man.config.bz2 解壓縮之后的文件內(nèi)容!犬耻!
范例三:將范例一的文件解壓縮
[root@www tmp]# bzip2 -d man.config.bz2
tar
:文件打包命令(配合-j
或-z
參數(shù)可以進(jìn)行壓縮/解壓縮):
[root@www ~]# tar [-j|-z] [cv] [-f 創(chuàng)建的檔名] filename... <==打包與壓縮
[root@www ~]# tar [-j|-z] [tv] [-f 創(chuàng)建的檔名] <==察看檔名
[root@www ~]# tar [-j|-z] [xv] [-f 創(chuàng)建的檔名] [-C 目錄] <==解壓縮
選項與參數(shù):
-c :創(chuàng)建打包文件踩晶,可搭配 -v 來察看過程中被打包的檔名(filename)
-t :察看打包文件的內(nèi)容含有哪些檔名,重點在察看『檔名』就是了枕磁;
-x :解打包或解壓縮的功能渡蜻,可以搭配 -C (大寫) 在特定目錄解開
特別留意的是, -c, -t, -x 不可同時出現(xiàn)在一串命令列中。
-j :透過 bzip2 的支持進(jìn)行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
-z :透過 gzip 的支持進(jìn)行壓縮/解壓縮:此時檔名最好為 *.tar.gz
-v :在壓縮/解壓縮的過程中茸苇,將正在處理的檔名顯示出來排苍!
-f filename:-f 后面要立刻接要被處理的檔名!建議 -f 單獨寫一個選項羅税弃!
-C 目錄 :這個選項用在解壓縮纪岁,若要在特定目錄解壓縮,可以使用這個選項则果。
其他后續(xù)練習(xí)會使用到的選項介紹:
-p :保留備份數(shù)據(jù)的原本權(quán)限與屬性幔翰,常用於備份(-c)重要的配置檔
-P :保留絕對路徑,亦即允許備份數(shù)據(jù)中含有根目錄存在之意西壮;
--exclude=FILE:在壓縮的過程中遗增,不要將 FILE 打包!
比如:打包并壓縮/etc
文件:
[root@www ~]# tar -zpcv -f /root/etc.tar.gz /etc
tar: Removing leading `/' from member names <==注意這個警告信息款青,去除根目錄/做修,防止解壓縮后為絕對路徑,覆蓋了/etc/下的文件
/etc/
....中間省略....
/etc/esd.conf
/etc/crontab
# 由於加上 -v 這個選項抡草,因此正在作用中的檔名就會顯示在螢?zāi)簧稀?# 如果你可以翻到第一頁饰及,會發(fā)現(xiàn)出現(xiàn)上面的錯誤信息!底下會講解康震。
# 至於 -p 的選項燎含,重點在於『保留原本文件的權(quán)限與屬性』之意。
[root@www ~]# tar -jpcv -f /root/etc.tar.bz2 /etc
# 顯示的信息會跟上面一模一樣羅腿短!
常用命令如下:
壓 縮:tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱
查 詢:tar -jtv -f filename.tar.bz2
解壓縮:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
dd
:也可以用來備份文件:
[root@www ~]# dd if="input_file" of="output_file" bs="block_size" \
> count="number"
選項與參數(shù):
if :就是 input file 羅~也可以是裝置喔屏箍!
of :就是 output file 喔~也可以是裝置;
bs :規(guī)劃的一個 block 的大小橘忱,若未指定則默認(rèn)是 512 bytes(一個 sector 的大小)
count:多少個 bs 的意思赴魁。
范例一:將 /etc/passwd 備份到 /tmp/passwd.back 當(dāng)中
[root@www ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
1945 bytes (1.9 kB) copied, 0.000332893 seconds, 5.8 MB/s
[root@www ~]# ll /etc/passwd /tmp/passwd.back
-rw-r--r-- 1 root root 1945 Sep 29 02:21 /etc/passwd
-rw-r--r-- 1 root root 1945 Dec 17 18:09 /tmp/passwd.back
# 仔細(xì)的看一下,我的 /etc/passwd 文件大小為 1945 bytes钝诚,因為我沒有配置 bs 颖御,
# 所以默認(rèn)是 512 bytes 為一個單位,因此凝颇,上面那個 3+1 表示有 3 個完整的
# 512 bytes郎嫁,以及未滿 512 bytes 的另一個 block 的意思啦!
# 事實上祈噪,感覺好像是 cp 這個命令啦~
cpio
:也可以用于備份泽铛,一般配合find
使用:
[root@www ~]# cpio -ovcB > [file|device] <==備份
[root@www ~]# cpio -ivcdu < [file|device] <==還原
[root@www ~]# cpio -ivct < [file|device] <==察看
備份會使用到的選項與參數(shù):
-o :將數(shù)據(jù) copy 輸出到文件或裝置上
-B :讓默認(rèn)的 Blocks 可以添加至 5120 bytes ,默認(rèn)是 512 bytes 辑鲤!
這樣的好處是可以讓大文件的儲存速度加快(請參考 i-nodes 的觀念)
還原會使用到的選項與參數(shù):
-i :將數(shù)據(jù)自文件或裝置 copy 出來系統(tǒng)當(dāng)中
-d :自動創(chuàng)建目錄盔腔!使用 cpio 所備份的數(shù)據(jù)內(nèi)容不見得會在同一層目錄中,因此我們
必須要讓 cpio 在還原時可以創(chuàng)建新目錄,此時就得要 -d 選項的幫助弛随!
-u :自動的將較新的文件覆蓋較舊的文件瓢喉!
-t :需配合 -i 選項,可用在"察看"以 cpio 創(chuàng)建的文件或裝置的內(nèi)容
一些可共享的選項與參數(shù):
-v :讓儲存的過程中文件名稱可以在螢?zāi)簧巷@示
-c :一種較新的 portable format 方式儲存
比如:
范例:找出 /boot 底下的所有文件舀透,然后將他備份到 /tmp/boot.cpio 去栓票!
[root@www ~]# find /boot -print
/boot
/boot/message
/boot/initrd-2.6.18-128.el5.img
....以下省略....
# 透過這個 find 我們可以找到 /boot 底下應(yīng)該要存在的檔名!包括文件與目錄
[root@www ~]# find /boot | cpio -ocvB > /tmp/boot.cpio
[root@www ~]# ll -h /tmp/boot.cpio
-rw-r--r-- 1 root root 16M Dec 17 23:30 /tmp/boot.cpio
我們使用 find /boot
可以找出文件名愕够,然后透過那條管線 |
走贪, 就能將文件名傳給 cpio 來進(jìn)行處理。接下來讓我們來進(jìn)行解壓縮看看:
范例:將剛剛的文件給他在 /root/ 目錄下解開
[root@www ~]# cpio -idvc < /tmp/boot.cpio
[root@www ~]# ll /root/boot
# 你可以自行比較一下 /root/boot 與 /boot 的內(nèi)容是否一模一樣惑芭!