650 likes | 747 Views
第 3 ç« ç›®éŒ„èˆ‡æª”æ¡ˆæ“作. 內容: Unix/Linux 檔案系統簡介 Unix/Linux 檔案型態 目錄æ“作命令 檔案æ“作命令 檔案屬性æ“作 檔案壓縮. 3-1 Unix/Linux 檔案系統簡介. 階層å¼æª”案çµæ§‹ 家æ—樹 目錄與檔案çµæ§‹. 檔案系統目錄çµæ§‹. Linux 裡é¢çš„ç›®éŒ„æ˜¯å‘ˆç¾ ã€Ž 樹狀目錄 〠的情æ³ï¼Œå°±æ˜¯æœ‰åˆ†æ”¯çš„啦 å‡è¨ä½ 需è¦åœ¨ä»»æ„一個目錄下變æ›åˆ°æ ¹ç›®éŒ„çš„ etc 底下,那麼就應該使用 『 cd /etc 〠所以ä¸è«–ä½ åœ¨å“ªä¸€å€‹è·¯å¾‘ç¾åŸ·è¡Œé€™ä¸€å€‹æŒ‡ä»¤ï¼Œéƒ½æœƒå°‡ä½ 移動到該路徑下
E N D
第 3 章 目錄與檔案操作 內容: Unix/Linux 檔案系統簡介 Unix/Linux 檔案型態 目錄操作命令 檔案操作命令 檔案屬性操作 檔案壓縮
3-1 Unix/Linux 檔案系統簡介 階層式檔案結構 家族樹 目錄與檔案結構
檔案系統目錄結構 Linux 裡面的目錄是呈現『樹狀目錄』 的情況,就是有分支的啦 假設你需要在任意一個目錄下變換到根目錄的 etc 底下,那麼就應該使用『 cd /etc 』 所以不論你在哪一個路徑現執行這一個指令,都會將你移動到該路徑下 這也就是所謂的『絕對路徑』,他是從根目錄連續寫上來的一個情況, 所以不論你在哪一個路徑現執行這一個指令,都會將你移動到該路徑下 要切換到『目前這個目錄下的 etc 目錄中』,就應該使用 『cd etc 』
絕對路徑 v.s 相對路徑 絕對路徑 路徑的寫法『一定由根目錄 / 寫起』 例如: /usr/share/doc 這個目錄。 相對路徑 路徑的寫法『不是由 / 寫起』 例如由 /usr/share/doc 要到 /usr/share/man 底下時,可以寫成: 『cd ../man』 這就是相對路徑的寫法啦!相對路徑意指『相對於目前工作目錄的路徑!』
絕對路徑 v.s 相對路徑 由於不同的人喜歡安裝在不同的目錄之下 假設甲安裝的目錄是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man 乙卻喜歡安裝在 /home/packages/etc, /home/packages/bin, /home/packages/man 三個目錄中 請問如果需要用到絕對路徑的話,那麼就會很麻煩!這個時候相對路徑的寫法就顯的特別的重要了!
絕對路徑 v.s 相對路徑 一個目錄 /data4/staiwan19961109/models-3/smoke另一個目錄在 /data4/staiwan19961109/models-3/cctm 那麼我從第一個要到第二個目錄去的話,怎麼寫比較方便? 當然是『 cd ../cctm 』比較方便! 但對於檔案的正確性來說,『絕對路徑的正確度要比較好~』 絕對路徑的寫法雖然比較麻煩,但是可以肯定這個寫法絕對不會有問題。 如果使用相對路徑在程式當中,則可能由於您執行的工作環境不同,導致一些問題的發生
3-1 Unix/Linux 檔案系統簡介 檔案名稱 File_name.file_type.file_ext_type File_name: 檔案名稱 File_type: 副檔名 File_ext_type: 擴充副檔名
3-1 Unix/Linux 檔案系統簡介 絕對路徑 /a_dir /b_dir/file_1 /b_dir/d_dir/file_3
3-1 Unix/Linux 檔案系統簡介 相對路徑 『.』:目前目錄 『..』:目前目錄的父目錄
3-2 Unix/Linux 檔案型態 (1) 可區分為四種型態 一般檔案 (Ordinary file) 目錄檔案 (Directory file) 鏈結檔案 (Linking file) 特殊檔案 (Special file) 檔案屬性
3-2 Unix/Linux 檔案型態 一般檔案 字元檔案 二進位檔案 紀錄檔案 目錄檔案 儲存子目錄與檔案索引
3-2 Unix/Linux 檔案型態 (3) 鏈路檔案 $ ln –s file_2 file_3
3-2 Unix/Linux 檔案型態 (5) 檔案存取許可權 rwx rwx rwx 擁有者(Owner): rwx --- --- 群組(Group):--- rwx --- 其他人(Other):--- --- rwx 三種使用權限 讀取 (Read, r) 寫入 (Write, w) 執行 (Execute, x)
3-3 目錄操作命令 顯示工作目錄 pwd 建立新目錄 mkdir 改變工作目錄 cd 顯示目錄的內容 ls 刪除目錄 rmdir
3-4 檔案操作命令 複製檔案 – cp 顯示檔案內容 – cat 以頁方式顯示檔案內容 – more 搬移檔案 – mv 刪除檔案 – rm 尋找檔案 – find 查閱檔案的屬性 - file
使用者與群組 檔案擁有者 群組概念 其他人的概念
檔案擁有者 由於 Linux 是個多人多工的系統 因此常常會有多人同時使用這主機來進行工作 為了每個人的隱私權及每個人喜好的工作環境, 因此『檔案擁有者』的角色就顯的相當重要 例如當你將你的 e-mail 情書轉存成檔案之後,放在您自己的家目錄,總不希望被其他人看見 就把該檔案設定成『只有檔案擁有者,就是我,才能看與修改這個檔案的內容』,由於有設定適當的權限, 所以其他人自然無法知道該檔案的內容!
群組概念 群組最簡單的功能之一,就是當在團隊開發資源的時候最有用 假如我的主機上面有兩個團體,第一個團體名稱為 testgroup ,而成員是 test1, test2, test3 第二個團體名稱為 treatgoup ,團員為 treat1, treat2, treat3 這兩個團體之間是互相有競爭性質的, 但是卻又要繳交同一份報告,然而每組團員又需要同時可以修改自己的團體內任何人所建立的檔案, 且不能讓非自己團體的其他人看到自己的檔案內容!
群組概念 如果 teacher 這個帳號是 testgroup 與 treatgroup 這兩個群組的老師,他想要同時觀察兩者的進度 因此需要兩邊的群組都能夠進去觀看,可以設定 teacher 這個帳號『同時支援 testgroup 與 treatgroup 這兩個群組!』 每個人都可以有多個群組的支援!
群組概念 『家庭』的觀念來進行解說 假設有一家人,家裡只有三兄弟,分別是王大毛、王二毛與王三毛三個人, 而這個家庭是登記在王大毛的名下 由於王家三個人各自擁有自己的房間,所以,王二毛雖然可以進入王三毛的房間, 但是二毛不能翻三毛的抽屜喔!那樣會被三毛 K 的!因為抽屜裡面可能有三毛自己私人的東西,例如情書啦,日記啦等等的, 這是『私人的空間』,所以當然不能讓二毛拿囉! 由於共同擁有客廳,所以王家三兄弟可以在客廳打開電視機、翻閱報紙、坐在沙發上面發呆! 只要是在客廳的玩意兒,三兄弟都可以使用喔!因為大家都是一家人! 『王大毛家』就是所謂的『群組』
其他人的概念 張小豬﹙所謂的『其他人, Others 』 ﹚,是張小豬家的人,與王家沒有關係啦! 除非王家認識張小豬,然後開門讓張小豬進來王家,否則張小豬永遠沒有辦法進入王家, 更不要說進到王三毛的房間啦! 不過,如果張小豬透過關係認識了三毛,並且跟王三毛成為好朋友, 那麼張小豬就可以透過三毛進入王家 因此,在 Linux 裡面,任何一個檔案都具有『User, Group及 Others』三個權限!
『萬能的天神』 這個天神具有無限的神力, 所以他可以到達任何他想要去的地方,那個人在 Linux 系統中的身份代號是『 root 』啦!
3-5 檔案屬性操作 如何改變檔案權限 更改檔案權限、屬性– chmod 更改檔案擁有者 – chown 更改檔案群組 – chgrp 更改檔案日期 – touch
Linux檔案屬性 26
Linux檔案屬性 • 第一個屬性代表這個檔案是『目錄、檔案或連結檔等等』: • 當為[ d ]則是目錄,例如上表的第 11 行; • 當為[ - ]則是檔案,例如上表的第 5 行; • 若是[ l ]則表示為連結檔(link file); • 若是[ b ]則表示為裝置檔可供儲存的周邊設備; • 若是[ c ]則表示為裝置檔裡面的序列埠設備,例如鍵盤、滑鼠。 27
Linux檔案屬性 屬性中,三個為一組,且均為『rwx』 的三個參數的組合。 [ r ]代表可讀(read) [ w ]代表可寫(write) [ x ]代表可執行(execute) 第一組為『擁有人的權限』; 第二組為『同群組的權限』; 第三組為『其他非本群組的權限』。
Linux檔案屬性 若為底下的樣式時,請問非 root 的其他人是否可以進入該目錄呢? 有可讀[ r ]存在!! 答案是非 root 這個帳號的其他使用者均不可進入 .ssh 這個目錄 因為 x 與 目錄 的關係相當的重要, 如果您在該目錄底下不能執行任何指令的話,那麼自然也就無法進入了 因此, 如果您想要開放某個目錄讓一些人進來的話, 請記得將該目錄的 x 屬性給開放
Linux 目錄配置 Linux 目錄配置的依據 FHS Filesystem Hierarchy Standard FHS 定義出兩層規範出來 第一層是規範出在根目錄 ( / ) 底下各個主要的目錄應該是要放置什麼樣的檔案 /etc 應該要放置設定檔 /bin 與 /sbin 則應該要放置可執行檔 /usr 及 /var 這兩個目錄的次目錄 第二層則是針對來定義的 /var/log 放置系統登錄檔 /usr/share 放置共享資料
Linux 目錄配置 Linux 所有的檔案與目錄都由根目錄 / 開始的 那是所有目錄與檔案的源頭 這種目錄配置方式稱:『目錄樹 (directory tree)』 目錄樹的啟始點為根目錄 (/, root) 每一個目錄不止能使用本地端的 partition 的檔案系統,也可以使用網路上的 filesystem 可以利用 Network File System (NFS) 伺服器掛載某特定目錄 每一個檔案在此目錄樹中的檔名(包含完整路徑)都是獨一無二的
根據檔名寫法的不同,也可將所謂的路徑 (path) 定義為絕對路徑 (absolute) 與相對路徑 (relative) 絕對路徑為 由根目錄 (/) 開始寫起的檔名或目錄名稱 例如 /home/dmtsai/.bashrc 相對路徑 相對於目前路徑的檔名寫法 例如 ./home/dmtsai 或 ../../home/dmtsai/
舉例來說,目前在 /home 這個目錄下, 如果想要進入 /var/log 這個目錄時,怎麼寫? cd /var/log (absolute) cd ../var/log (relative) 因為您在 /home 底下,所以要回到上一層 (../) 之後,才能繼續往 /var 來移動的! . :代表當前的目錄,也可以使用 ./ 來表示 .. :代表上一層目錄,也可以 ../ 來代表
最好獨立成為單一partition的目錄 安全性與特殊功能性, 而希望能夠獨立成為一個自己的 partition /home, /usr, /var, /tmp 系統上的使用者個人家目錄在 /home 裡面, 這個目錄也是可能被使用的最頻繁的目錄之一 可能會希望針對每個人限制他可以使用的最大硬碟總量 (quota),所以必須要將 /home 獨立出來 /usr 則是一些程式安裝的目錄,也可以獨立出來 /var/, 這個目錄記錄了相當多的常用資料,讀取真很頻繁,是『很容易掛點的 partition 』
重要的幾個目錄 /etc 系統設定檔放置的地方, 包括系統上的帳號與密碼 (/etc/passwd, /etc/shadow),還有開機時所要用到的各項設定值 (/etc/sysconfig/*) ,還有各主要的網路服務的設定檔 /usr/local 自己開發或自行額外安裝的軟體放置在這個 /usr/local 目錄 /var 管理系統運作過程中的重要中間暫存資料的,例如 /var/lib 與 /var/run
一般目錄的配置情況 一般大型主機都不會將所有的資料放置在一個磁碟中 ( 就是只有一個『 / 』根目錄 ) 安全性考量 系統通常是在 /usr/ 中,而個人資料則可能放置在 /home 當中,至於一些開機資料則放置在 /etc 當中。如果將所有的資料放在一起,當你的系統不小心被駭客破壞,或者不小心自己砍了一個小東西, 則所有的資料檔案也都跟著不見了 便利性 升級系統,有些資料例如 /home 裡面的資料為個人用戶的資料,似乎與系統無關!所以如果你將這些資料分別放置於不同的磁碟, 則你要升級或者進行一些系統更動時,將比較有彈性
常見的磁碟分佈情況 • 可以將你的系統做成這樣的 partition 分佈 • / • /boot • /usr • /home • /var
常見的磁碟分佈情況 • / 根目錄可以分配約 1 GB 以內 • /boot 大概在 50 MB 就可以了,因為開機檔案並不大 • /var 就至少需要 1GB 以上,因為你的 mail 、 proxy 預設的儲存區都在這個目錄中
常見的磁碟分佈情況 • /home 與 /usr 通常是最大的 • /home • 因為你所安裝的資料都是在 /usr/ 當中,而用戶資料則放置在 /home 當中,因此通常大家都會建議你將所剩下的磁碟空間平均分配給這兩個目錄 • /usr • 大概給個 10G 就很多了~其他的可以都給 /home
Linux 支援的檔案系統 • 同樣的硬碟。 但是,每種作業系統都有其獨特的讀取檔案的方法,也就是說, 每種作業系統對硬碟讀取的方法不同,所以就造就了不同的檔案系統了 • Windows 98 預設的檔案系統是 FAT (或 FAT16) 檔案系統 • Windows 2000 有所謂的 NTFS 檔案系統 • Linux 的正統檔案系統則為 ext2 ( Linux second extended file system, ext2fs )
Linux 支援的檔案系統 • 系統能不能讀取某個檔案系統,與『核心功能』有關 • 你必須要將你所想要支援的檔案系統編譯到你的核心當中才能被支援 • Windows 與 Linux 安裝在同一個硬碟的不同 partition 時, Windows 將不能取用 Linux 的硬碟資料 • 因為 Windows 的核心不認識 Linux 的檔案系統
Linux 支援的檔案系統 • Fedora Core IV 預設檔案系統為 ext3 (Third Extended File System), 他是 Ext2 的升級版 • ext3 還是向下支援 ext2 • 日誌式檔案系統 • 如果你需要將你原有的 Windows 系統也掛載在 Linux 底下的話,那麼 Linux 同時也支援 MS-DOS, VFAT, FAT, BSD 等等的檔案系統 • NTFS 檔案系統則不見得每一個 Linux distribution 都有支援 • 可以到你的 Linux 系統的: /lib/modules/`uname -r`/kernel/fs
ext3日誌式檔案系統 • 日誌式檔案系統 • ext3 其實只是多做了一個日誌式資料的紀錄 • 當我們要在將資料寫入硬碟時, ext2 是直接將資料寫入,但是 ext3 則會將這個『要開始寫入』的訊息寫入日誌式記錄區, 然後才開始進行資料的寫入。在資料寫入完畢後,又將『完成寫入動作』的訊息寫入日誌式記錄區
ext3日誌式檔案系統 • 早期的 ext2 檔案系統如果發生類似斷電後時,檔案系統就得要檢查檔案一致性。 這個檢查的過程要將整個 partition 內的檔案做一個完整的比較 • ext3 的話,那麼只要透過檢查『日誌記錄區』就可以知道斷電時,是否有哪些檔案正在進行寫入的動作, 只要檢查這些地方即可 • 這樣就能夠節省很多檔案檢查的時間