標籤:

遷移到 Linux:磁碟、文件、和文件系統

在你的主要桌面計算機上安裝和使用 Linux 將幫你快速熟悉你需要的工具和方法。

這是我們的遷移到 Linux 系列文章的第二篇。如果你錯過了第一篇,你可以在這裡找到它。就如之前提到過的,為什麼要遷移到 Linux 的有幾個原因。你可以在你的工作中為 Linux 開發和使用代碼,或者,你可能只是想去嘗試一下新事物。

不論是什麼原因,在你主要使用的桌面計算機上擁有一個 Linux,將幫助你快速熟悉你需要的工具和方法。在這篇文章中,我將介紹 Linux 的文件、文件系統和磁碟。

我的 C: 在哪裡?

如果你是一個 Mac 用戶,Linux 對你來說應該非常熟悉,Mac 使用的文件、文件系統、和磁碟與 Linux 是非常接近的。另一方面,如果你的使用經驗主要是 Windows,訪問 Linux 下的磁碟可能看上去有點困惑。一般,Windows 給每個磁碟分配一個盤符(像 C:)。而 Linux 並不是這樣。而在你的 Linux 系統中它是一個單一的文件和目錄的層次結構。

讓我們看一個示例。假設你的計算機使用了一個主硬碟、一個有 BooksVideos 目錄的 CD-ROM 、和一個有 Transfer 目錄的 U 盤,在你的 WIndows 下,你應該看到的是下面的樣子:

C: [硬碟]n├ Systemn├ System32n├ Program Filesn├ Program Files (x86)n└ <更多目錄>nnD: [CD-ROM]n├ Booksn└ VideosnnE: [U 盤]n└ Transfern

而一個典型的 Linux 系統卻是這樣:

/ (最頂級的目錄,稱為根目錄) [硬碟]n├ binn├ etcn├ libn├ sbinn├ usrn├ <更多目錄>n└ median └ <你的用戶名>n ├ cdrom [CD-ROM]n │ ├ Booksn │ └ Videosn └ Kingme_USB [U 盤]n └ Transfern

如果你使用一個圖形化環境,通常,Linux 中的文件管理器將出現看起來像驅動器的圖標的 CD-ROM 和 USB 攜帶型驅動器,因此,你根本就無需知道介質所在的目錄。

文件系統

Linux 稱這些東西為文件系統。文件系統是在介質(比如,硬碟)上保持跟蹤所有的文件和目錄的一組結構。如果沒有用於存儲數據的文件系統,我們所有的信息就會混亂,我們就不知道哪個塊屬於哪個文件。你可能聽到過一些類似 ext4、XFS 和 Btrfs 之類的名字,這些都是 Linux 文件系統。

每種保存有文件和目錄的介質都有一個文件系統在上面。不同的介質類型可能使用了為它優化過的特定的文件系統。比如,CD-ROM 使用 ISO9660 或者 UDF 文件系統類型。USB 攜帶型驅動器一般使用 FAT32,以便於它們可以很容易去與其它計算機系統共享。

Windows 也使用文件系統。不過,我們不會過多的討論它。例如,當你插入一個 CD-ROM,Windows 將讀取 ISO9660 文件系統結構,分配一個盤符給它,然後,在盤符(比如,D:)下顯示文件和目錄。當然,如果你深究細節,從技術角度說,Windows 是分配一個盤符給一個文件系統,而不是整個驅動器。

使用同樣的例子,Linux 也讀取 ISO9660 文件系統結構,但它不分配盤符,它附加文件系統到一個目錄(這個過程被稱為掛載mount)。Linux 將隨後在所掛載的目錄(比如是, /media/<your user name>/cdrom )下顯示 CD-ROM 上的文件和目錄。

因此,在 Linux 上回答 「我的 C: 在哪裡?」 這個問題,答案是,這裡沒有 C:,它們工作方式不一樣。

文件

Windows 將文件和目錄(也被稱為文件夾)存儲在它的文件系統中。但是,Linux 也讓你將其它的東西放到文件系統中。這些其它類型的東西是文件系統的原生的對象,並且,它們和普通文件實際上是不同的。除普通文件和目錄之外,Linux 還允許你去創建和使用硬鏈接hard link、符號鏈接symbolic link、命名管道named pipe、設備節點device node、和套接字socket。在這裡,我們不展開討論所有的文件系統對象的類型,但是,這裡有幾種經常使用到的需要知道。

硬鏈接用於為文件創建一個或者多個別名。指向磁碟上同樣內容的每個別名的名字是不同的。如果在一個文件名下編輯文件,這個改變也同時出現在其它的文件名上。例如,你有一個 MyResume_2017.doc,它還有一個被稱為 JaneDoeResume.doc 的硬鏈接。(注意,硬鏈接是從命令行下,使用 ln 的命令去創建的)。你可以找到並編輯 MyResume_2017.doc,然後,然後找到 JaneDoeResume.doc,你發現它保持了跟蹤 —— 它包含了你所有的更新。

符號鏈接有點像 Windows 中的快捷方式。文件系統的入口包含一個到其它文件或者目錄的路徑。在很多方面,它們的工作方式和硬鏈接很相似,它們可以創建一個到其它文件的別名。但是,符號鏈接也可以像文件一樣給目錄創建一個別名,並且,符號鏈接可以指向到不同介質上的不同文件系統,而硬鏈接做不到這些。(注意,你可以使用帶 -s 選項的 ln 命令去創建一個符號鏈接)

許可權

Windows 和 Linux 另一個很大的區別是涉及到文件系統對象(文件、目錄、及其它)的許可權。Windows 在文件和目錄上實現了一套非常複雜的許可權。例如,用戶和用戶組可以有許可權去讀取、寫入、運行、修改等等。用戶和用戶組可以授權訪問除例外以外的目錄中的所有內容,也可以不允許訪問除例外的目錄中的所有內容。

然而,大多數使用 Windows 的人並不會去使用特定的許可權;因此,當他們發現在 Linux 上是強制使用一套默認許可權時,他們感到非常驚訝!Linux 通過使用 SELinux 或者 AppArmor 可以強制執行一套更複雜的許可權。但是,大多數 Linux 安裝版都只是使用了內置的默認許可權。

在默認的許可權中,文件系統中的每個條目都有一套為它的文件所有者、文件所在的組、和其它人的設置的許可權。這些許可權允許他們:讀取、寫入和運行。給它們的許可權是有層次繼承的。首先,它檢查這個(登入的)用戶是否為該文件所有者和擁有的許可權。如果不是,然後檢查這個用戶是否在文件所在的組中和該組擁有的許可權。如果不是,然後它再檢查其它人擁有的許可權。這裡設置了其它人的許可權。但是,這裡設置的三套許可權大多數情況下都會使用其中的一套。

如果你使用命令行,你輸入 ls -l,你可以看到如下所表示的許可權:

rwxrw-r-- 1 stan dndgrp 25 Oct 33rd 25:01 rolldice.shn

最前面的字母,rwxrw-r--,展示了許可權。在這個例子中,所有者(stan)可以讀取、寫入和運行這個文件(前面的三個字母,rwx);dndgrp 組的成員可以讀取和寫入這個文件,但是不能運行(第二組的三個字母,rw-);其它人僅可以讀取這個文件(最後的三個字母,r--)。

(注意,在 Windows 中去生成一個可運行的腳本,你生成的文件要有一個特定的擴展名,比如 .bat,而在 Linux 中,擴展名在操作系統中沒有任何意義。而是需要去設置這個文件可運行的許可權)

如果你收到一個 「permission denied」 錯誤,可能是你去嘗試運行了一個要求管理員許可權的程序或者命令,或者你去嘗試訪問一個你的帳戶沒有訪問許可權的文件。如果你嘗試去做一些要求管理員許可權的事,你必須切換登入到一個被稱為 root 的用戶帳戶。或者通過在命令行使用一個被稱為 sudo 的輔助程序。它可以臨時允許你以 root 許可權運行。當然,sudo 工具,也會要求你輸入密碼,以確保你真的有許可權。

硬碟文件系統

Windows 主要使用一個被稱為 NTFS 的硬碟文件系統。在 Linux 上,你也可以選一個你希望去使用的硬碟文件系統。不同的文件系統類型呈現不同的特性和不同的性能特徵。現在主流的原生 Linux 的文件系統是 Ext4。但是,在安裝 Linux 的時候,你也有豐富的文件系統類型可供選擇,比如,Ext3(Ext4 的前任)、XFS、Btrfs、UBIFS(用於嵌入式系統)等等。如果你不確定要使用哪一個,Ext4 是一個很好的選擇。


via: linux.com/blog/learn/in

作者:JOHN BONESIO 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


推薦閱讀:

Linux RAS特性分析
偽造掌閱ireader plus升級的伺服器
深入實時 Linux
Linux 包管理基礎:apt、yum、dnf 和 pkg
Bash判斷、循環、控制語句常用用法歸納

TAG:迁移 | Linux |