歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> Linux系統(一)文件系統、壓縮、打包操作總結,linux打包

Linux系統(一)文件系統、壓縮、打包操作總結,linux打包

日期:2017/3/3 17:30:41   编辑:學習Linux

Linux系統(一)文件系統、壓縮、打包操作總結,linux打包


熱度5 評論 224 www.BkJia.Com 網友分享於: 2017-02-22 04:02:53 浏覽數10006次

Linux系統(一)文件系統、壓縮、打包操作總結,linux打包


序言

當前的形勢,.Net已經開源,.Net Core 正在跨平台,可見微軟巨人在努力,在改變,在進步,在走向春天。從前被微軟供作上帝的.Net從業者,如果不打開心扉面向開源,改變自己,那麼很可能在不久的將來,恐英雄無用武之地,可悲可歎,嗚呼哀哉!

如今Linux已經是開發者必備技能之一,我們想要了解它,深入它,就不能偷懶,只操作圖標按鈕完美的界面。我要像微軟一樣改變,進步,深入,飛翔,與太陽肩並肩。

那麼感興趣者就來跟哥哥裝裝B,漲漲姿勢,敲敲像電視劇裡面只有黑客才會懂的,黑色背景下的命令吧。一天一點,重在累積吧,其實Linux的學習也就是一個積沙成塔的過程,前後關聯不是很大,學一點會一點,努力吧。

我的Linux目標

我的目標很簡單,就是用命令操作Linux系統,像操作Windows一樣簡單,直觀。

前提:0、不知道什麼是Linux的請點擊網頁頂部右上方的X。1、裝個Linux系統,我裝的是CentOS7,不會裝系統的也請點擊網頁右上角的X。2、你要自己能夠進入系統中,不要自己都登錄,連接不上(好尴尬啊,也X吧)!

接下來我會寫幾篇關於linux的博文,裡面的命令我建議初學者不要只看,不練,要看著敲著,用心記著,記不著啦,就常回來看看。

始於cd,ls命令

好啦,步入正題,我使用的linux連接工具為xshell,mRemoteNG,對兩款工具不做介紹啦,你可以百度一下,實在不會入左上方群。

進入之後,便是上面的界面黑乎乎一片,對於初學者也可能是一片懵逼,猶如狗拿刺猬,那麼不要急,我們先來看下人生中的第一個linux命令:ls 與 cd 。

首先你先使用下面的cd命令:

[root@localhost ~]# 這個是當前用戶的用戶文件夾主目錄
[root@localhost /]# 這個是整個系統的根目錄

緊接著輸入ls命令展示出一下結果。

那麼這些文件都裝載啦什麼東東,為什麼要放在根目錄下,接下來我們對此做個詳解。

ls,cd命令的語法與參數使用方法:http://man.linuxde.net ,不能偷懶哦,要敲敲, 你才能學好,多敲才能記住的。

Linux的文件種類,擴展名

在linux中,任何設備都是文件,就連數據通信接口也有專門的文件負責。所以我們要搞清楚linux下的文件有哪些?哪些作用?

首先我們這樣輸入命令,如下:

亂七八糟的都是什麼呢?我拿dev這個文件夾做為示例分解下:

1、文件類型

普通文件:就是我們一般的文件,他在linux中按照文件內容大致分文3種。

  • 純文本文件(ASCII):內容直接被我們讀到,如數字,字母等,幾乎我們可以設置讀寫的文件都是這一種,他可以通過cat命令打開,直接查看內容。
  • 二進制文件(binary):linux唯一可以識別執行的文件,在系統中可執行文件就是這種格式,例如:剛剛執行的cat就是一個二進制文件。
  • 數據格式文件(data):程序在運行過程中讀取的特定格式文件,就是數據文件,比如:用戶登錄的用戶數據記錄在/var/log/wtmp這個數據格式文件中。比較明顯的特征使用last可以讀出來,cat讀時是亂碼。

塊(block)設備文件:為一些存儲數據,以體統隨機訪問的接口設備,如硬盤,軟盤等,可以隨機的在硬盤的不同塊讀寫,可以看看/dev/sda

字符(character)設備文件:一些串行端口的接口設備,如鍵盤、鼠標等。這些設備的特征就是“一次性讀取”的,不能夠截斷輸出。例如:鼠標只能滑動到一個地方而不能跳到另外一個地方。

套字節(sockets):這種文件類型用於在網絡上的數據連接。

管道(FIFO,pipe):fifo,first-in-first-out,主要解決多個程序同事訪問一個文件所造成的錯誤問題。

目錄(directory):就是目錄。

連接文件(link):類似windows系統中的快捷鍵。

2、文件權限r-xr-xr-x

  • 縮寫字母的意義:x:可執行,r:可讀,w:可寫,-占位。
  • 123:擁有者權限,456:用戶組用戶權限,789:其他用戶權限。
  • 特征順序為rwx。

3、連接數:表示有多少文件名連接到此節點。

4、文件名

  • linux中沒有像windows中所謂的擴展名。但是為啦方便認識還是要有寫擴展名的習慣。
  • 文件長度限制,一般不要超過255個字符就好。

  • 文件命名限制,最好避免*?><;&|、\'"(){}

文件目錄結構

當你打開linux系統之後,輸入命令:cd \ 進入根目錄之後,再ls會顯示出如下目錄結構

那麼這些目錄都有存放些什麼文件,我們的文件又該以何種規范來存放呢?

Linux目錄結構標准:FHS(Filesystem Hierarchy Standard)標准

為什麼要使用一個標准呢?很簡單,就是讓用戶和廠商有個共同的認識與約束,不至於各自為政,把linux系統的目錄搞的亂七八糟,東西隨便放,那我們的學習成本就很大啦。

關於FHS網上有很多介紹,FHS根據多去的經驗也一直在持續改版(http://www.pathname.com/fhs/),FHS根據文件系統使用的頻繁情況,是否允許用戶隨意改動,將目錄定義成4種交互作用的形態,如下:

  • 可分享的:可以分享給其他系統掛載使用的目錄。
  • 不可分享的:僅與自身機器有關,不適合分享給其他主機的。如自己機器上運行的設備文件或者與程序有關的socket文件。
  • 不變的:不會經常變動的數據,如說明文件,函數庫,主機服務配置文件等。
  • 可變動的:經常會改變的數據,如登錄文件,新聞組等。

根目錄與根目錄下的文件夾存放說明

根目錄是整個系統最重要的一個目錄,因為所有的目錄都是由它衍生出來,而且根目錄也與開機,還原,系統修復等操作有關。

由於系統開機需要特定的開機軟件、內核文件、開機所需要的程序、函數庫等文件數據,若系統出現異常時,根目錄也要有能夠修復文件系統的程序。由此可見根目錄的重要性,所以FHS建議,根目錄不要放在非常大的分區內,因為越大防止的文件越多,出錯的幾率也越大,性能也越不好,所以,根目錄應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在一個分區內。

由此我們來說說下面的文件都是什麼,又怎麼放置才好。

其實,FHS標准對根目錄的定義僅有如下的目錄數據。

其中有5個目錄不可與根目錄分開放在不同的分區。這5個目錄分別為:etc,bin,dev,lib,sbin。

那麼除啦以上的文件夾之外,還有一些linux系統中也非常重要的目錄如下:

/dev目錄:

  • hd[a-t]:IDE設備
  • sd[a-z]:SCSI設備
  • fd[0-7]:標准軟驅
  • md[0-31]:軟raid設備
  • loop[0-7]:本地回環設備
  • ram[0-15]:內存
  • null:無限數據接收設備,相當於黑洞
  • zero:無限零資源
  • tty[0-63]:虛擬終端
  • ttyS[0-3]:串口
  • lp[0-3]:並口
  • console:控制台
  • fb[0-31]:framebuffer
  • cdrom => /dev/hdc
  • modem => /dev/ttyS[0-9]
  • pilot => /dev/ttyS[0-9]
  • random:隨機數設備
  • urandom:隨機數設備

/etc目錄

  • /etc/rc,/etc/rc.d,/etc/rc*.d : 啟動、或改變運行級時運行的scripts或scripts的目錄。
  • /etc/passwd: 用戶數據庫,其中的域給出了用戶名、真實姓名、家目錄、加密的口令和用戶的其他信息。
  • /etc/fstab :啟動時mount -a命令(在/etc/rc 或等效的啟動文件中)自動mount的文件系統列表。Linux下,也包括用swapon -a啟用的swap區的信息。
  • /etc/group :類似/etc/passwd ,但說明的不是用戶而是用戶組。
  • /etc/inittab :init 的配置文件,設定系統啟動時init進程將把系統設置成什麼樣的runlevel 。
  • /etc/issue getty 在登錄提示符前的輸出信息.通常包括系統的一段短說明或歡迎信息內容由系統管理員確定。
  • /etc/motd: Message Of The Day,成功登錄後自動輸出內容由系統管理員確定,經常用於通告信息,如計劃關機時間的警告。
  • /etc/mtab: 當前安裝的文件系統列表.由scripts初始化,並由mount 命令自動更新,需要一個當前安裝的文件系統的列表時使用,例如df 命令。
  • /etc/shadow: 在安裝了影子口令軟件的系統上的影子口令文件.影子口令文件將/etc/passwd 文件中的加密口令移動到/etc/shadow 中,而後者只對root可讀這使破譯口令更困難.
  • /etc/login.defs: login 命令的配置文件。
  • /etc/printcap: 類似/etc/termcap ,但針對打印機語法不同。
  • /etc/profile , /etc/csh.login , /etc/csh.cshrc :登錄或啟動時Bourne或C shells執行的文件,這允許系統管理員為所有用戶建立全局缺省環境。
  • /etc/securetty: 確認安全終端,即哪個終端允許root登錄.一般只列出虛擬控制台,這樣就不可能(至少很困難)通過modem或網絡闖入系統並得到超級用戶特權。
  • /etc/shells: 列出可信任的shell.chsh 命令允許用戶在本文件指定范圍內改變登錄shell.提供一台機器FTP服務的服務進程ftpd 檢查用戶shell是否列在 /etc/shells 文件中,如果不是將不允許該用戶登錄.
  • /etc/sysconfig :網絡配置相關目錄
  • /etc/DIR_COLORS: 設定顏色
  • /etc/HOSTNAME: 設定用戶的節點名
  • /etc/NETWORKING: 只有YES標明網絡存在
  • /etc/host.conf: 文件說明用戶的系統如何查詢節點名
  • /etc/hosts: 設定用戶自已的IP與名字的對應表
  • /etc/hosts.allow: 設置允許使用inetd的機器使用
  • /etc/hosts.deny: 設置不允許使用inetd的機器使用
  • /etc/hosts.equiv: 設置遠端機不用密碼
  • /etc/inetd.conf: 設定系統網絡守護進程inetd的配置
  • /etc/inetd.pid :inetd這個進程的進程id
  • /etc/hosts.lpd :設定遠端有哪些節點可以使用本機的打印機
  • /etc/gateways: 設定路由器
  • /etc/protocols: 設定系統支持的協議
  • /etc/named.boot: 設定本機為名字服務器的配置文件
  • /etc/named.pid: 本機上運行的名字服務器的進程id
  • /etc/networks :設定網絡的配置文件
  • /etc/resolv.conf :設定系統的名字服務器
  • /etc/services: 設定系統的端品與協議類型和提供的服務
  • /etc/exports: 設定NFS系統用的
  • /etc/NNTP_INEWS_DOMAIN: 設置新聞服務器的配置文件
  • /etc/nntpserver: 設置用戶使用的新聞服務器的地址
  • /etc/XF86Config: X Window的配置文件
  • /etc/hostid: 系統獨有的一個硬件id
  • /etc/at.deny: 設置哪些用戶不能使用at命令
  • /etc/bootptab: 給MAKEDEV程序設定各種不同的設備驅動文件的格式
  • /etc/makedev.cfg: 同DEVINFO一樣給MAKEDEV使用的設置文件
  • /etc/diphosts: 設置拔號服務器的用戶名和口令
  • /etc/slip.hosts,/etc/slip.login: 設定SLIP的配置文件
  • /etc/fastboot: 使用shutdown -f產生的,重啟系統要查這個文件
  • /etc/fstab: 記錄開機要mount的文件系統
  • /etc/ftpaccess: FTP服務器的一些配置
  • /etc/ftpconversions: 設定在FTP時使用的過濾器的位置
  • /etc/ftpusers: 設定不能使用FTP服務的用戶
  • /etc/ld.so.cache: 查找系統動態鏈接庫的緩存
  • /etc/ld.so.conf: 系統動態鏈接庫的路徑
  • /etc/lilo.conf lilo:的配置文件
  • /etc/magic: 給file命令使用的
  • /etc/aliases :給sendmail使用的設置別名的文件
  • /etc/sendmail.st: 設置sendmail的
  • /etc/motd: 超級用戶發布通知的地方
  • /etc/organization: 存放用戶的名字和組織
  • /etc/pnpdevices: 列出支持的Plug&Play設備
  • /etc/snooptad: 監控用戶的屏幕,監聽的終端列表
  • /etc/sudoers: 可以sudo命令的配置文件
  • /etc/syslog.conf: 系統記錄程序syslogd的配置文件
  • /etc/utmp: 目前在用系統的用戶信息
  • /etc/wtmp: 同utmp差不多,只是它累加
  • /etc/nologin: 系統在shutdown時不希望用戶登錄就產生這個文件
  • /etc/termcap: 設置系統終端信息的
  • /etc/ttys: 設定系統的終端類型
  • /etc/gettydefs: getty_ps的定義文件
  • /etc/yp.conf: NIS的配置文件
  • /etc/mtools.conf: 設定mtools程序的參數
  • /etc/fdprm: 設定格式化軟盤的參數
  • /etc/login.access: 控制用戶登錄權限的文件

/proc目錄

  • /proc/cmdline: 加載 kernel 時所下達的相關參數,查閱此文件,可了解系統是如何啟動。
  • /proc/cpuinfo: 本機的 CPU 的相關資訊,包含時脈、類型與運算功能等
  • /proc/devices: 這個文件記錄了系統各個主要裝置的主要裝置代號,與 mknod 有關。
  • /proc/filesystems: 目前系統已經加載的文件系統。
  • /proc/interrupts: 目前系統上面的 IRQ 分配狀態。
  • /proc/ioports: 目前系統上面各個裝置所配置的 I/O 位址。
  • /proc/kcore: 這個就是內存的大小,但是不要讀他。
  • /proc/loadavg: 還記得 top 以及 uptime 吧?沒錯,上頭的三個平均數值就是記錄在此。
  • /proc/meminfo: 使用 free 列出的內存資訊,在這裡也能夠查閱到。
  • /proc/modules: 目前我們的 Linux 已經加載的模塊列表,也可以想成是驅動程序。
  • /proc/mounts: 系統已經掛載的數據,就是用 mount 這個命令呼叫出來的數據。
  • /proc/swaps: 到底系統掛加載的內存在哪裡?使用掉的 partition 就記錄在此啦。
  • /proc/partitions: 使用 fdisk -l 會出現目前所有的 partition 吧?在這個文件當中也有紀錄。
  • /proc/pci: 在 PCI 匯流排上面,每個裝置的詳細情況,可用 lspci 來查閱。
  • /proc/uptime: 就是用 uptime 的時候,會出現的資訊。
  • /proc/version: 核心的版本,就是用 uname -a 顯示的內容。
  • /proc/bus/*: 一些匯流排的裝置,還有 U盤 的裝置也記錄在此。

/usr目錄

依據FHS的基本定義/usr裡面放置的數據屬於可分享不可變動的。usr是UNIX Software Resource的縮寫,也就是“UNIX操作系統軟件資源”所放置的目錄,而不是用戶數據,不要跟user扯上關系。它相當於windows系統中的c:\windows與c:program files這兩個目錄的綜合體。剛裝完系統時,這個目錄占用的硬盤容量最多。因為幾乎所有的應用程序都安裝在這裡,本地安裝的程序和其他東西放在/usr/local下。

  • /usr/etc: 存放配置文件。
  • /usr/games: 存放游戲和教學文件。
  • /usr/include: c/c++等程序語言的頭文件與包含文件放置處,當我們以tarball方式(*.tar.gz的方式安裝軟件)安裝某些數據時,會使用到裡面的許多包含文件。開發和編譯應用程序所需要的頭文件。
  • /usr/share:放置共享文件的地方,在這個目錄下放置的數據幾乎是不分硬件架構均可讀取的數據,因為幾乎都是文本文件。如/usr/share/man:在線幫助文件,/usr/share/doc:軟件雜項的文件說明,zoneinfo:與時區相關的文件。
  • /usr/bin: 絕大部分用戶可使用的命令都放在這裡。有些命令在/bin(是否與開機過程有關) 或/usr/local/bin 中。
  • /usr/sbin :根文件系統不必要的系統管理命令,例如多數服務程序。
  • /usr/share/man , /usr/share/info , /usr/share/doc: 手冊頁、GNU信息文檔和各種其他文檔文件。
  • /usr/lib: 包含各應用軟件的函數庫,目標文件,以及不被一般用戶慣用的執行文件或腳本。某些軟件會提供一些特殊的命令來進行服務器的設置,這些命令也不會經常被系統管理員操作,那就被放在這個目錄下。
  • /usr/local:管理員在本機自己安裝自己下載的軟件,建議安裝到此目錄。該目錄也具有bin,etc,include,lib。
  • /usr/src: 存放程序的源代碼,linux內核的源代碼存放在/usr/src/kernels。

/var目錄

usr是安裝時占用大量的硬盤容量,而var則是在系統運行後才會慢慢占用硬盤的容量。因為var目錄主要針對常態性變動的文件,比如,緩存,登錄文件,以及某些軟件運行所產生的文件,包括程序文件(lock file,run file)。

  • /var/catman:當要求格式化時的man頁的cache.man頁的源文件一般存在/usr/man/man* 中;有些man頁可能有預格式化的版本,存在/usr/man/cat* 中.而其他的man頁在第一次看時需要格式化,格式化完的版本存在/var/man 中,這樣其他人再看相同的頁時就無須等待格式化了. (/var/catman 經常被清除,就象清除臨時目錄一樣.)
  • /var/lib:系統正常運行時要改變的文件。
  • /var/local,/usr/local:中安裝的程序的可變數據(即系統管理員安裝的程序).注意,如果必要,即使本地安裝的程序也會使用其他/var 目錄,例如/var/lock 。
  • /var/lock:鎖定文件.許多程序遵循在/var/lock 中產生一個鎖定文件的約定,以支持他們正在使用某個特定的設備或文件.其他程序注意到這個鎖定文件,將不試圖使用這個設備或文件。
  • /var/log:各種程序的Log文件,特別是login (/var/log/wtmp log所有到系統的登錄和注銷) 和syslog (/var/log/messages 裡存儲所有核心和系統程序信息. /var/log 裡的文件經常不確定地增長,應該定期清除。
  • /var/run:某些程序或者服務啟動後,會將他們的pid放置在這個目錄下。保存到下次引導前有效的關於系統的信息文件.例如, /var/run/utmp 包含當前登錄的用戶的信息。
  • /var/spool:放置一些隊列數據,就是排隊等待其他程序使用的數據。這些數據被使用後通常都會被刪除。例如,系統收到新信件會放置到/var/spool/mail中,用戶收下後,該信件原則上時會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue中,等到被送出去就被刪除。如果是工作排程數據,就會被放置到/var/spool/cron目錄中。
  • /var/tmp 比/tmp:允許的大或需要存在較長時間的臨時文件。 (雖然系統管理員可能不允許/var/tmp 有很舊的文件.)
  • /var/cache:應用程序本身運行過程中會產生的一些暫存文件。

LIUNX系統的目錄樹,如下:

Linux系統中文件的壓縮打包功能

壓縮:是一種通過特定的算法來減小計算機文件大小的機制(百度百科下)。

打包:將多個文件放入一個文件中,最終以一個文件的形式存在。

Linux系統中常見的壓縮命令有三種:compress , gzip , bzip2 。

  • compress:這個壓縮命令僅存在古老的unix機器上,是一個很古老的壓縮方式,被gzip所取代,gzip也可以解壓commress的壓縮文件。所以我這裡不做過多介紹,有需求的朋友可以:http://man.linuxde.net/compress 我這裡給一個截圖如下:
  • gzip:這個壓縮命令在目前來說算是最常見的,它可以解開compress\zip\gzip等軟件所壓縮的文件。有9個壓縮等級,1最快壓縮比最差,9最慢壓縮比最好,默認為6。使用zcat命令可以查看讀取compress與gzip的壓縮文件。對文本的壓縮率可達到:60%-70%,可配合tar使用。
  • bzip:如果說gzip是用來取代compress的,那麼bzip就是為了取代gzip而存在的。他的壓縮率竟然比gzip還要好,可配合tar使用。

gzip的常用用法:

語法:gzip 參數 文件名

參數:

-c:將壓縮的數據輸出到屏幕上,可通過數據重定向來處理。

-d:解壓的參數

-t:可以用來檢驗一個壓縮文件的一致性,看看文件是否有錯誤。

-v:可以顯示出源文件/壓縮文件的壓縮比信息。

-#:壓縮等級,1-9。

常用的語句:壓縮:gzip -v filename ,解壓:gzip -d filename 。 查看文本壓縮文件:zcat 文件名。

bzip2的常用用法:

語法:bzip2 參數 文件名

參數:

-c:將壓縮過程中產生的數據輸出到屏幕上

-d:解壓縮

-k:保留源文件,而不會刪除原始文件

-z:壓縮

-v:顯示出源文件/壓縮文件的壓縮比等信息。

-#:與gzip相同,1-9壓縮比的參數,1最快,9最佳。

常用的語句:壓縮:bzip2 -z filename ,解壓:bzip2 -d filename 。查看壓縮文本:bzcat filename.bz2

tar打包命令

以上三種壓縮解壓只能針對單文件執行,那麼如果將多個文件合並到一個大文件中,怎麼做到呢?那就要用tar這個命令。tar不止這麼多,它還支持gzip/bzip2在打包的同時對文件進行壓縮。由於這tar使用過於廣泛,就連windows中的WinRAR也支持.tar.gz文件名的解壓縮。

語法:打包與壓縮:tar [-j|-z] [cv] [-f 新建的文件名] filename 解壓縮: tar [-j|-z] [xv] [-f 新建的文件名] [-C 目錄]

參數:

-c:新建打包文件,可搭配-v來查看過程中被打包的文件名

-t:查看打包文件的內容含有那些文件名,重點在查看文件

-x:解壓縮或解打包的功能,可搭配-C在特定目錄解開。特別留意的是,-c,-t,-x不可同時出現在一串命令中。

-j:通過bzip2的支持進行壓縮或解壓。

-z:通過gzip的支持進行壓縮或解壓。

-v:在壓縮或解壓的過程中,將正在處理的文件名稱顯示出來。

-f filename:-f後面要接被處理的文件名。建議-f單獨寫一個參數。

-C 目錄:這個參數在解壓時,若要在特定目錄解壓縮,可以使用這個參數。

.tar.bz2 格式常用的語法

解壓: tar jxvf filename.tar.bz2 , 壓縮: tar jcvf filename.tar.bz2 要壓縮的文件

.tar.gz 格式常用的語法

解壓:tar zxvf filename.tar.gz ,壓縮: tar zcvf filename.tar.gz 要壓縮的文件

總結

接下來是大家最喜歡的總結內容啦,內容有三,如下:

1、希望能關注我其他的文章。

2、博客裡面有沒有很清楚的說明白,或者你有更好的方式,那麼歡迎加入左上方的2個交流群,我們一起學習探討。

3、你可以忘記點贊加關注,但千萬不要忘記掃碼打賞哦。

http://www.bkjia.com/Linuxjc/1194747.html TechArticle

Copyright © Linux教程網 All Rights Reserved