<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 8.3 打包指令: tar 前一小節談到的指令大多僅能針對單一文件來進行壓縮,雖然 gzip, bzip2, xz 也能夠針對目錄來進行壓縮,不過, 這兩個指令對目錄的壓縮指的是“將目錄內的所有文件 "分別" 進行壓縮”的動作!而不像在 Windows 的系統,可以使用類似 [WinRAR](http://www.rar.com.tw/) 這一類的壓縮軟件來將好多數據“包成一個文件”的樣式。 這種將多個文件或目錄包成一個大文件的指令功能,我們可以稱呼他是一種“打包指令”啦! 那 Linux 有沒有這種打包指令呢?是有的!那就是鼎鼎大名的 tar 這個玩意兒了! tar 可以將多個目錄或文件打包成一個大文件,同時還可以通過 gzip/bzip2/xz 的支持,將該文件同時進行壓縮! 更有趣的是,由于 tar 的使用太廣泛了,目前 Windows 的 WinRAR 也支持 .tar.gz 文件名的解壓縮呢! 很不錯吧!所以下面我們就來玩一玩這個咚咚! ### 8.3.1 tar tar 的選項與參數非常的多!我們只講幾個常用的選項,更多選項您可以自行 man tar 查詢啰! ``` [dmtsai@study ~]$ tar [-z&#124;-j&#124;-J] [cv] [-f 待創建的新文件名] filename... &lt;==打包與壓縮 [dmtsai@study ~]$ tar [-z&#124;-j&#124;-J] [tv] [-f 既有的 tar文件名] &lt;==察看文件名 [dmtsai@study ~]$ tar [-z&#124;-j&#124;-J] [xv] [-f 既有的 tar文件名] [-C 目錄] &lt;==解壓縮 選項與參數: -c :創建打包文件,可搭配 -v 來察看過程中被打包的文件名(filename) -t :察看打包文件的內容含有哪些文件名,重點在察看“文件名”就是了; -x :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開 特別留意的是, -c, -t, -x 不可同時出現在一串命令行中。 -z :通過 gzip 的支持進行壓縮/解壓縮:此時文件名最好為 *.tar.gz -j :通過 bzip2 的支持進行壓縮/解壓縮:此時文件名最好為 *.tar.bz2 -J :通過 xz 的支持進行壓縮/解壓縮:此時文件名最好為 *.tar.xz 特別留意, -z, -j, -J 不可以同時出現在一串命令行中 -v :在壓縮/解壓縮的過程中,將正在處理的文件名顯示出來! -f filename:-f 后面要立刻接要被處理的文件名!建議 -f 單獨寫一個選項啰!(比較不會忘記) -C 目錄 :這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。 其他后續練習會使用到的選項介紹: -p(小寫) :保留備份數據的原本權限與屬性,常用于備份(-c)重要的配置文件 -P(大寫) :保留絕對路徑,亦即允許備份數據中含有根目錄存在之意; --exclude=FILE:在壓縮的過程中,不要將 FILE 打包! ``` 其實最簡單的使用 tar 就只要記憶下面的方式即可: * 壓 縮:tar -j&lt;u&gt;c&lt;/u&gt;v -f filename.tar.bz2 要被壓縮的文件或目錄名稱 * 查 詢:tar -j&lt;u&gt;t&lt;/u&gt;v -f filename.tar.bz2 * 解壓縮:tar -j&lt;u&gt;x&lt;/u&gt;v -f filename.tar.bz2 -C 欲解壓縮的目錄 那個 filename.tar.bz2 是我們自己取的文件名,tar 并不會主動的產生創建的文件名喔!我們要自訂啦! 所以擴展名就顯的很重要了!如果不加 [-z|-j|-J] 的話,文件名最好取為 *.tar 即可。如果是 -j 選項,代表有 bzip2 的支持,因此文件名最好就取為 *.tar.bz2 ,因為 bzip2 會產生 .bz2 的擴展名之故! 至于如果是加上了 -z 的 gzip 的支持,那文件名最好取為 *.tar.gz 喔!了解乎? 另外,由于“ -f filename ”是緊接在一起的,過去很多文章常會寫成“-jcvf filename”,這樣是對的, 但由于選項的順序理論上是可以變換的,所以很多讀者會誤認為“-jvfc filename”也可以~事實上這樣會導致產生的文件名變成 c ! 因為 -fc 嘛!所以啰,建議您在學習 tar 時,將“ -f filename ”與其他選項獨立出來,會比較不容易發生問題。 閑話少說,讓我們來測試幾個常用的 tar 方法吧! * 使用 tar 加入 -z, -j 或 -J 的參數備份 /etc/ 目錄 有事沒事備份一下 /etc 這個目錄是件好事!備份 /etc 最簡單的方法就是使用 tar 啰!讓我們來玩玩先: ``` [dmtsai@study ~]$ su - # 因為備份 /etc 需要 root 的權限,否則會出現一堆錯誤 [root@study ~]# time tar -zpcv -f /root/etc.tar.gz /etc tar: Removing leading `/' from member names &lt;==注意這個警告訊息 /etc/ ....(中間省略).... /etc/hostname /etc/aliases.db real 0m0.799s # 多了 time 會顯示程序運行的時間!看 real 就好了!花去了 0.799s user 0m0.767s sys 0m0.046s # 由于加上 -v 這個選項,因此正在作用中的文件名就會顯示在屏幕上。 # 如果你可以翻到第一頁,會發現出現上面的錯誤訊息!下面會講解。 # 至于 -p 的選項,重點在于“保留原本文件的權限與屬性”之意。 [root@study ~]# time tar -jpcv -f /root/etc.tar.bz2 /etc ....(前面省略).... real 0m1.913s user 0m1.881s sys 0m0.038s [root@study ~]# time tar -Jpcv -f /root/etc.tar.xz /etc ....(前面省略).... real 0m9.023s user 0m8.984s sys 0m0.086s # 顯示的訊息會跟上面一模一樣啰!不過時間會花比較多!使用了 -J 時,會花更多時間 [root@study ~]# ll /root/etc* -rw-r--r--. 1 root root 6721809 Jul 1 00:16 /root/etc.tar.bz2 -rw-r--r--. 1 root root 7758826 Jul 1 00:14 /root/etc.tar.gz -rw-r--r--. 1 root root 5511500 Jul 1 00:16 /root/etc.tar.xz [root@study ~]# du -sm /etc 28 /etc # 實際目錄約占有 28MB 的意思! ``` 壓縮比越好當然要花費的運算時間越多!我們從上面可以看到,雖然使用 gzip 的速度相當快,總時間花費不到 1 秒鐘,但是壓縮率最糟糕! 如果使用 xz 的話,雖然壓縮比最佳!不過竟然花了 9 秒鐘的時間耶!這還僅是備份 28MBytes 的 /etc 而已,如果備份的數據是很大容量的, 那你真的要考慮時間成本才行! 至于加上“ -p ”這個選項的原因是為了保存原本文件的權限與屬性!我們曾在[第六章的 cp 指令介紹](../Text/index.html#cp)時談到權限與文件類型(例如鏈接文件)對復制的不同影響。 同樣的,在備份重要的系統數據時,這些原本文件的權限需要做完整的備份比較好。此時 -p 這個選項就派的上用場了。 接下來讓我們看看打包文件內有什么數據存在? * 查閱 tar 文件的數據內容 (可察看文件名),與備份文件名有否根目錄的意義 要察看由 tar 所創建的打包文件內部的文件名非常的簡單!可以這樣做: ``` [root@study ~]# tar -jtv -f /root/etc.tar.bz2 ....(前面省略).... -rw-r--r-- root/root 131 2015-05-25 17:48 etc/locale.conf -rw-r--r-- root/root 19 2015-05-04 17:56 etc/hostname -rw-r--r-- root/root 12288 2015-05-04 17:59 etc/aliases.db ``` 如果加上 -v 這個選項時,詳細的文件權限/屬性都會被列出來!如果只是想要知道文件名而已, 那么就將 -v 拿掉即可。從上面的數據我們可以發現一件很有趣的事情,那就是每個文件名都沒了根目錄了!這也是上一個練習中出現的那個警告訊息“tar: Removing leading `/' from member names(移除了文件名開頭的 `/' )”所告知的情況! 那為什么要拿掉根目錄呢?主要是為了安全!我們使用 tar 備份的數據可能會需要解壓縮回來使用, 在 tar 所記錄的文件名 (就是我們剛剛使用 tar -jtvf 所察看到的文件名) 那就是解壓縮后的實際文件名。 如果拿掉了根目錄,假設你將備份數據在 /tmp 解開,那么解壓縮的文件名就會變成“/tmp/&lt;u&gt;etc/xxx&lt;/u&gt;”。 但“如果沒有拿掉根目錄,解壓縮后的文件名就會是絕對路徑, 亦即解壓縮后的數據一定會被放置到 &lt;u&gt;/etc/xxx&lt;/u&gt; 去!”如此一來,你的原本的 /etc/ 下面的數據, 就會被備份數據所覆蓋過去了! ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 你會說:“既然是備份數據,那么還原回來也沒有什么問題吧?”想像一個狀況,你備份的數據是兩年前的舊版 CentOS 6.x, 你只是想要了解一下過去的備份內容究竟有哪些數據而已,結果一解開該文件,卻發現你目前新版的 CentOS 7.x 下面的 /etc 被舊版的備份數據覆蓋了!此時你該如何是好?大概除了哭哭你也不能做啥事吧?所以啰,當然是拿掉根目錄比較安全一些的。 如果你確定你就是需要備份根目錄到 tar 的文件中,那可以使用 -P (大寫) 這個選項,請看下面的例子分析: ``` 范例:將文件名中的(根)目錄也備份下來,并察看一下備份文件的內容文件名 [root@study ~]# tar -jp&lt;u&gt;P&lt;/u&gt;cv -f /root/etc.and.root.tar.bz2 /etc [root@study ~]# tar -jtf /root/etc.and.root.tar.bz2 /etc/locale.conf /etc/hostname /etc/aliases.db # 這次查閱文件名不含 -v 選項,所以僅有文件名而已!沒有詳細屬性/權限等參數。 ``` 有發現不同點了吧?如果加上 -P 選項,那么文件名內的根目錄就會存在喔!不過,鳥哥個人建議,還是不要加上 -P 這個選項來備份! 畢竟很多時候,我們備份是為了要未來追蹤問題用的,倒不一定需要還原回原本的系統中! 所以拿掉根目錄后,備份數據的應用會比較有彈性!也比較安全呢! * 將備份的數據解壓縮,并考慮特定目錄的解壓縮動作 (-C 選項的應用) 那如果想要解打包呢?很簡單的動作就是直接進行解打包嘛! ``` [root@study ~]# tar -jxv -f /root/etc.tar.bz2 [root@study ~]# ll ....(前面省略).... drwxr-xr-x. 131 root root 8192 Jun 26 22:14 etc ....(后面省略).... ``` 此時該打包文件會在“本目錄下進行解壓縮”的動作! 所以,你等一下就會在主文件夾下面發現一個名為 etc 的目錄啰!所以啰,如果你想要將該文件在 /tmp 下面解開, 可以 cd /tmp 后,再下達上述的指令即可。不過,這樣好像很麻煩呢~有沒有更簡單的方法可以“指定欲解開的目錄”呢? 有的,可以使用 -C 這個選項喔!舉例來說: ``` [root@study ~]# tar -jxv -f /root/etc.tar.bz2 -C /tmp [root@study ~]# ll /tmp ....(前面省略).... drwxr-xr-x. 131 root root 8192 Jun 26 22:14 etc ....(后面省略).... ``` 這樣一來,你就能夠將該文件在不同的目錄解開啰!鳥哥個人是認為,這個 -C 的選項務必要記憶一下的! 好了,處理完畢后,請記得將這兩個目錄刪除一下呢! ``` [root@study ~]# rm -rf /root/etc /tmp/etc ``` 再次強調,這個“ rm -rf ”是很危險的指令!下達時請務必要確認一下后面接的文件名。我們要刪除的是 /root/etc 與 /tmp/etc, 您可不要將 /etc/ 刪除掉了!系統會死掉的~ ^_^ * 僅解開單一文件的方法 剛剛上頭我們解壓縮都是將整個打包文件的內容全部解開!想像一個情況,如果我只想要解開打包文件內的其中一個文件而已, 那該如何做呢?很簡單的,你只要使用 -jtv 找到你要的文件名,然后將該文件名解開即可。 我們用下面的例子來說明一下: ``` # 1\. 先找到我們要的文件名,假設解開 shadow 文件好了: [root@study ~]# tar -jtv -f /root/etc.tar.bz2 &#124; grep 'shadow' ---------- root/root 721 2015-06-17 00:20 etc/gshadow ---------- root/root 1183 2015-06-17 00:20 etc/shadow- ---------- root/root 1210 2015-06-17 00:20 etc/shadow &lt;==這是我們要的! ---------- root/root 707 2015-06-17 00:20 etc/gshadow- # 先搜尋重要的文件名!其中那個 grep 是“擷取”關鍵字的功能!我們會在第三篇說明! # 這里您先有個概念即可!那個管線 &#124; 配合 grep 可以擷取關鍵字的意思! # 2\. 將該文件解開!語法與實際作法如下: [root@study ~]# tar -jxv -f 打包檔.tar.bz2 待解開文件名 [root@study ~]# tar -jxv -f /root/etc.tar.bz2 etc/shadow etc/shadow [root@study ~]# ll etc total 4 ----------. 1 root root 1210 Jun 17 00:20 shadow # 很有趣!此時只會解開一個文件而已!不過,重點是那個文件名!你要找到正確的文件名。 # 在本例中,你不能寫成 /etc/shadow !因為記錄在 etc.tar.bz2 內的并沒有 / 之故! ``` ![鳥哥的圖示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鳥哥的圖示") **Tips** 在這個練習之前,你可能要先將前面練習所產生的 /root/etc 刪除才行!不然 /root/etc/shadow 會重復存在,而其他的前面實驗的文件也會存在, 那就看不出什么鬼~ * 打包某目錄,但不含該目錄下的某些文件之作法 假設我們想要打包 /etc/ /root 這幾個重要的目錄,但卻不想要打包 /root/etc* 開頭的文件,因為該文件都是剛剛我們才創建的備份文件嘛! 而且假設這個新的打包文件要放置成為 /root/system.tar.bz2 ,當然這個文件自己不要打包自己 (因為這個文件放置在 /root 下面啊!),此時我們可以通過 --exclude 的幫忙! 那個 exclude 就是不包含的意思!所以你可以這樣做: ``` [root@study ~]# tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* \ &gt; --exclude=/root/system.tar.bz2 /etc /root ``` 上面的指令是一整列的~其實你可以打成:“tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc /root”,如果想要兩行輸入時,最后面加上反斜線 (\) 并立刻按下 [enter] , 就能夠到第二行繼續輸入了。這個指令下達的方式我們會在第三章再仔細說明。 通過這個 --exclude="file" 的動作,我們可以將幾個特殊的文件或目錄移除在打包之列,讓打包的動作變的更簡便喔!^_^ * 僅備份比某個時刻還要新的文件 某些情況下你會想要備份新的文件而已,并不想要備份舊文件!此時 --newer-mtime 這個選項就粉重要啦! 其實有兩個選項啦,一個是“ --newer ”另一個就是“ --newer-mtime ”,這兩個選項有何不同呢? 我們在 [第六章的 touch](../Text/index.html#touch) 介紹中談到過三種不同的時間參數, 當使用 --newer 時,表示后續的日期包含“ mtime 與 ctime ”,而 --newer-mtime 則僅是 mtime 而已! 這樣知道了吧! ^_^ 。那就讓我們來嘗試處理一下啰! ``` # 1\. 先由 [find](../Text/index.html#find) 找出比 /etc/passwd 還要新的文件 [root@study ~]# find /etc -newer /etc/passwd ....(過程省略).... # 此時會顯示出比 /etc/passwd 這個文件的 mtime 還要新的文件名, # 這個結果在每部主機都不相同!您先自行查閱自己的主機即可,不會跟鳥哥一樣! [root@study ~]# ll /etc/passwd -rw-r--r--. 1 root root 2092 Jun 17 00:20 /etc/passwd # 2\. 好了,那么使用 tar 來進行打包吧!日期為上面看到的 2015/06/17 [root@study ~]# tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 \ &gt; --newer-mtime="2015/06/17" /etc/* tar: Option --newer-mtime: Treating date `2015/06/17' as 2015-06-17 00:00:00 tar: Removing leading `/' from member names /etc/abrt/ ....(中間省略).... /etc/alsa/ /etc/yum.repos.d/ ....(中間省略).... tar: /etc/yum.repos.d/CentOS-fasttrack.repo: file is unchanged; not dumped # 最后行顯示的是“沒有被備份的”,亦即 not dumped 的意思! # 3\. 顯示出文件即可 [root@study ~]# tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 &#124; grep -v '/$' # 通過這個指令可以調用出 tar.bz2 內的結尾非 / 的文件名!就是我們要的啦! ``` 現在你知道這個指令的好用了吧!甚至可以進行差異文件的記錄與備份呢~ 這樣子的備份就會顯的更容易啰!你可以這樣想像,如果我在一個月前才進行過一次完整的數據備份, 那么這個月想要備份時,當然可以僅備份上個月進行備份的那個時間點之后的更新的文件即可! 為什么呢?因為原本的文件已經有備份了嘛!干嘛還要進行一次?只要備份新數據即可。這樣可以降低備份的容量啊! * 基本名稱: tarfile, tarball ? 另外值得一提的是,tar 打包出來的文件有沒有進行壓縮所得到文件稱呼不同喔! 如果僅是打包而已,就是“ tar -cv -f file.tar ”而已,這個文件我們稱呼為 tarfile 。 如果還有進行壓縮的支持,例如“ tar -jcv -f file.tar.bz2 ”時,我們就稱呼為 tarball (tar 球?)!這只是一個基本的稱謂而已,不過很多書籍與網絡都會使用到這個 tarball 的名稱!所以得要跟您介紹介紹。 此外,tar 除了可以將數據打包成為文件之外,還能夠將文件打包到某些特別的設備去,舉例來說, 磁帶機 (tape) 就是一個常見的例子。磁帶機由于是一次性讀取/寫入的設備,因此我們不能夠使用類似 cp 等指令來復制的! 那如果想要將 /home, /root, /etc 備份到磁帶機 (/dev/st0) 時,就可以使用:“tar -cv -f /dev/st0 /home /root /etc”,很簡單容易吧! 磁帶機用在備份 (尤其是企業應用) 是很常見的工作喔! * 特殊應用:利用管線命令與數據流 在 tar 的使用中,有一種方式最特殊,那就是通過標準輸入輸出的數據流重導向(standard input/standard output), 以及管線命令 (pipe) 的方式,將待處理的文件一邊打包一邊解壓縮到目標目錄去。 關于數據流重導向與管線命令更詳細的數據我們會在[第十章 bash](../Text/index.html) 再跟大家介紹, 下面先來看一個例子吧! ``` # 1\. 將 /etc 整個目錄一邊打包一邊在 /tmp 解開 [root@study ~]# cd /tmp [root@study tmp]# tar -cvf - /etc &#124; tar -xvf - # 這個動作有點像是 cp -r /etc /tmp 啦~依舊是有其有用途的! # 要注意的地方在于輸出文件變成 - 而輸入文件也變成 - ,又有一個 &#124; 存在~ # 這分別代表 standard output, standard input 與管線命令啦! # 簡單的想法中,你可以將 - 想成是在內存中的一個設備(緩沖區)。 # 更詳細的數據流與管線命令,請翻到 [bash](../Text/index.html) 章節啰! ``` 在上面的例子中,我們想要“將 /etc 下面的數據直接 copy 到目前所在的路徑,也就是 /tmp 下面”,但是又覺得使用 cp -r 有點麻煩,那么就直接以這個打包的方式來打包,其中,指令里面的 - 就是表示那個被打包的文件啦! 由于我們不想要讓中間文件存在,所以就以這一個方式來進行復制的行為啦! * 例題:系統備份范例 系統上有非常多的重要目錄需要進行備份,而且其實我們也不建議你將備份數據放置到 /root 目錄下! 假設目前你已經知道重要的目錄有下面這幾個: * /etc/ (配置文件) * /home/ (使用者的主文件夾) * /var/spool/mail/ (系統中,所有帳號的郵件信箱) * /var/spool/cron/ (所有帳號的工作排成配置文件) * /root (系統管理員的主文件夾) 然后我們也知道,由于[第七章](../Text/index.html#loop)曾經做過的練習的關系, /home/loop* 不需要備份,而且 /root 下面的壓縮文件也不需要備份,另外假設你要將備份的數據放置到 /backups ,并且該目錄僅有 root 有權限進入! 此外,每次備份的文件名都希望不相同,例如使用:backup-system-20150701.tar.bz2 之類的文件名來處理。 那你該如何處理這個備份數據呢?(請先動手作看看,再來察看一下下面的參考解答!) ``` # 1\. 先處理要放置備份數據的目錄與權限: [root@study ~]# mkdir /backups [root@study ~]# chmod 700 /backups [root@study ~]# ll -d /backups drwx------. 2 root root 6 Jul 1 17:25 /backups # 2\. 假設今天是 2015/07/01 ,則創建備份的方式如下: [root@study ~]# tar -jcv -f /backups/backup-system-20150701.tar.bz2 \ &gt; --exclude=/root/*.bz2 --exclude=/root/*.gz --exclude=/home/loop* \ &gt; /etc /home /var/spool/mail /var/spool/cron /root ....(過程省略).... [root@study ~]# ll -h /backups/ -rw-r--r--. 1 root root 21M Jul 1 17:26 backup-system-20150701.tar.bz2 ``` * 解壓縮后的 SELinux 課題 如果,鳥哥是說如果,如果因為某些緣故,所以你的系統必須要以備份的數據來回填到原本的系統中,那么得要特別注意復原后的系統的 SELinux 問題! 尤其是在系統文件上面!例如 /etc 下面的文件群。SELinux 是比較特別的細部權限設置,相關的介紹我們會在 16 章好好的介紹一下。 在這里,你只要先知道,SELinux 的權限問題“可能會讓你的系統無法存取某些配置文件內容,導致影響到系統的正常使用權”。 這兩天 (2015/07) 接到一個網友的 email,他說他使用鳥哥介紹的方法通過 tar 去備份了 /etc 的數據,然后嘗試在另一部系統上面復原回來。 復原倒是沒問題,但是復原完畢之后,無論如何就是無法正常的登陸系統!明明使用單人維護模式去操作系統時,看起來一切正常~但就是無法順利登陸。 其實這個問題倒是很常見!大部分原因就是因為 /etc/shadow 這個密碼文件的 SELinux 類型在還原時被更改了!導致系統的登陸程序無法順利的存取它, 才造成無法登陸的窘境。 那如何處理呢?簡單的處理方式有這幾個: * 通過各種可行的救援方式登陸系統,然后修改 /etc/selinux/config 文件,將 SELinux 改成 permissive 模式,重新開機后系統就正常了; * 在第一次復原系統后,不要立即重新開機!先使用 restorecon -Rv /etc 自動修復一下 SELinux 的類型即可。 * 通過各種可行的方式登陸系統,創建 /.autorelabel 文件,重新開機后系統會自動修復 SELinux 的類型,并且又會再次重新開機,之后就正常了! 鳥哥個人是比較偏好第 2 個方法,不過如果忘記了該步驟就重新開機呢?那鳥哥比較偏向使用第 3 個方案來處理,這樣就能夠解決復原后的 SELinux 問題啰! 至于更詳細的 SELinux ,我們得要講完程序 (process) 之后,你才會有比較清楚的認知,因此還請慢慢學習,到第 16 章你就知道問題點了! ^_^
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看