1. 程式人生 > >linux下的軟連結和硬連結具體操作和區別

linux下的軟連結和硬連結具體操作和區別

簡單的看個圖,看下它們軟連結和硬連結和block以及inode的區別

這裡寫圖片描述

根據下面的步驟來進行實踐

1、使用vi a建立一個檔案a
2、使用ln a b命令建立一個連結

這裡寫圖片描述

使用cp a c建立一個複製版本
這裡寫圖片描述

觀察3個檔案的大小、時間、屬主(owner)等屬性
這裡寫圖片描述

3. 修改檔案a,下面就是修改完a檔案的內容,然後去檢視a檔案的內容
這裡寫圖片描述

4. 觀察檔案b的內容,觀察檔案c的內容,觀察3個檔案的大小、時間、屬主(owner)等屬性
這裡寫圖片描述

5. 使用ls –li命令,觀察檔案a, b, c的inode編號

inode其實可以看作是C語言中的指標,指向了物理硬碟的一個區塊,檔案系統會維護一個引用計數,只要有檔案指向這個區塊,它就不會從硬碟上消失,兩個檔案和一個檔案一樣,inode值是相同的,都指向同一個區塊

這裡寫圖片描述

6. 使用rm a刪除檔案a
這裡寫圖片描述

7. 觀察檔案b, c是否仍然存在,內容如何

b和c依然存在

這裡寫圖片描述

8. 使用rm b刪除檔案b,再觀察檔案b, c是否存在

c還是存在的

這裡寫圖片描述

1、建立檔案a
2、使用ln –s a b建立符號一個連結
這裡寫圖片描述

然後將a刪除,再去ls -l,再去檢視下目錄結構,b也是被刪除了
這裡寫圖片描述

三、不同使用者之間的硬連結和符號連結

1、在使用者stu下建立檔案a
注意使用chmod命令,將主目錄(~stu)許可權改為所有其它使用者可訪問(r-x)
chmod o+rx ~stu 用數字的方式改變許可權,如:Chmod 777 ~stu 其中r表示可讀入許可權,w表示寫入許可權,x表示的是執行許可權,o表示的其他使用者+就是在增加許可權

建立的a檔案
這裡寫圖片描述

然後去設定許可權
這裡寫圖片描述

2. 在另一個登入視窗內(使用Alt+F2切換到另一個登入視窗,使用Alt+F1切換回原登入視窗),以使用者stu2登入,分別使用ln ~stu/a ha和ln –s ~stu/a sa命令建立硬連結ha和符號連結sa
這裡寫圖片描述

觀察3個檔案的大小、時間、屬主(owner)等屬性
這裡寫圖片描述

3. 在使用者stu下,修改檔案a;在使用者stu2下分別觀察檔案ha和sa的內容
這裡寫圖片描述

4. 在使用者stu下,修改檔案a的訪問許可權;在使用者stu2下,用ls –l命令觀察ha和sa的訪問許可權、使用者屬主等資訊,並使用cat命令、cp命令、vi命令驗證訪問控制權限的作用

檢視許可權,最前面一列

這裡寫圖片描述

無法編輯,因為沒有w許可權

這裡寫圖片描述

5. 兩個使用者下,分別使用ls –li命令檢查檔案a, ha, sa的inode編號,想一下為什麼ha是硬連結產生的檔案,所以inode是和我們stu使用者是一樣的
這裡寫圖片描述
這裡寫圖片描述

6、在使用者stu2下刪除ha;觀察sa存在與否?使用者stu下檔案a存在與否?刪除ha,sa還存在因為它是軟連結到使用者stu下的a檔案的,a檔案還是存在的
這裡寫圖片描述

7、在使用者stu下可以刪除檔案a嗎?刪除後,使用者stu2下的檔案sa還存在嗎?內容是什麼?使用者stu下可以刪除檔案刪除檔案a

刪除檔案a

這裡寫圖片描述

stu2使用者下已經不存在了

這裡寫圖片描述

最後利用unlink函式寫一個模仿的rm命令

unlink命令用於系統呼叫函式unlink去刪除指定的檔案。和rm命令作用一樣,都是刪除檔案。從檔案系統中刪除一個名稱。如果名稱是檔案的最後一個連線,並且沒有其它程序將檔案開啟,名稱對應的檔案會實際被刪除。
int unlink(const char *pathname);
引數:pathname:指向需解除連線的檔名。

#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>

int main(int argc, char *argv[])
{
    int rc;

    if (argc != 2) {
        printf("\nUsage: myrm <filename> \n\n");
        return 1;
    }

/* We do not check the permission here.  Even a file has permission
   000, it can still be removed without any warning */

    rc = unlink(argv[1]);
    if (rc) {
        printf("Error: %s\n", strerror(errno));
        return 2;
    }
    return 0;
}

1、編輯 vi myrm.c
2、編譯 gcc myrm.c –o myrm
3、執行 ./myrm 待刪除的檔名

這裡寫圖片描述
這裡寫圖片描述

相關推薦

linux連線與連結的本質區別

軟連線跟硬連結最大的區別在於: 1.檔案A和檔案B的inode號碼一樣,對檔案內容進行修改,會影響到所有檔名;但是,刪除一個檔名,不影響另一個檔名的訪問。這種情況就被稱為"硬連結"(hard link)。2.檔案A和檔案B的inode號碼雖然不一樣,但是檔案A的內容是檔案B

linux連結連結具體操作區別

簡單的看個圖,看下它們軟連結和硬連結和block以及inode的區別 根據下面的步驟來進行實踐 一、檔案連結與複製 (hard link) 1、使用vi a建立一個檔案a 2、使用l

Linux連結檔案的區別——連結連結

部落格搬家了,最近同時更新,沒準什麼時候就完全搬走了-_- http://blog.just666.cn 這個是新部落格地址,希望大家多多關照 0X00 什麼是連結檔案 Linux中的連結檔案就相當於是Windows中的快捷方式,通過連結檔案可

linux連結連結區別與小結

首先我們需要了解linux下硬連結以及軟連線的基本概念. 硬連結:新建的檔案是已經存在的檔案的一個別名,當原檔案刪除時,新建的檔案仍然可以使用. 軟連結:也稱為符號連結,新建的檔案以“路徑”的形式來表示另一個檔案,和Windows的快捷方式十分相似,新建的軟連結可以指向不存在的檔案. 下

LInux連結連結的建立、刪除

軟連結:     1.以路徑的形式存在     2.軟連結可以跨檔案系統,硬連結不可以     3.軟連結可以對一個不存在的檔名進行連結     4.軟連結可以對

Linux連結連結簡單指引

在Linux中的連結方式有兩種,軟連結和硬連結。 軟連結的方式 link -s /home/hadoop/aaa.txt /home/aaa.txt 這種連結方式,相當於建立一個快捷方式,我可以使

Linux檔案系統----連結連結

更多Linux檔案系統知識:Linux檔案系統-----基礎IO Linux檔案系統的認知 1、Linux系統下一切皆檔案 現代作業系統為解決資訊能獨立於程序之外被長期儲存引入了檔案,檔案作為程序建立資訊的邏輯單元可被多個程序併發使用。在 UNIX 系統中,作業

linux連結連結

                簡而言之:軟連結相當於windows中的快捷方式硬連結相當於一個災備系統,資料存放在兩處,與複製不同的是兩處之間存在同步機制,一處資料的改變會實時同步到另一處,另外一處資料如果被刪除了,不會影響到另一處的資料.下面是詳細的介紹: 存在兩種不同型別的連結,軟連結和硬連結。修改其中

Linux學習筆記 連結連結

Linux 中,“everything is file”。接下來給大家介紹 linux 如何通過連結,達到節省磁碟空間、共享檔案等目的。連結檔案有兩種方式,軟連結(soft link)和硬連結(hard link)。 考慮這幾個場景。 1) 假如你在 Linux 系統中有一堆媒體檔案,你想將他們分

Linux檔案系統簡介連結連結區別

Linux有著極其豐富的檔案系統,大體可分為如下幾類: 網路檔案系統:如nfs、cifs等; 磁碟檔案系統:如ext3、ext4等; 特殊檔案系統:如prco、sysfs、ramfs、tmpfs等; 一、Linux系統中一切皆檔案(除程序以外) Linux系統的頂層目錄結構如下 1 /

Linux命令——建立連結連結

Linux 系統中有軟連結和硬連結兩種特殊的“檔案”。 軟連結可以看作是Windows中的快捷方式,可以讓你快速連結到目標檔案或目錄。 硬連結則透過檔案系統的inode來產生新檔名,而不是產生新檔案。 建立方法: #軟連結 ln -s source targe #硬連結 ln so

Linux基礎第三天—Linux連結連結、安裝nginx以及基本配置、LNMPLAMP的搭建

ln    建立硬連結 ln oldboy.txt oldgirl.txt    建立硬連結,原檔案oldboy.txt寫在前面,兩檔案inode相同,存在同一個block中, 內容同步刪除,但其中一個刪除 另一個並不會消失,因為block, l

linux 連線連結

1.軟連結: 建立軟連結:ln -s /usr/local/node-v4.2.6-linux-x86/bin/node /usr/local/bin/node 解釋:將/usr/local/node-v4.2.6-linux-x86/bin/下的node對

Linux連線(Symbolic Link)連結(Hard Link)的區別(轉)

Linux連結分兩種,一種被稱為硬連結(Hard Link),另一種被稱為符號連結(Symbolic Link)。預設情況下,ln命令產生硬連結。--硬連線硬連線指通過索引節點來進行連線。在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(Inode Inde

Linux連線連結區別

什麼是連結? 連結簡單說實際上是一種檔案共享的方式,是 POSIX 中的概念,主流檔案系統都支援連結檔案。 它是用來幹什麼的? 你可以將連結簡單地理解為 Windows 中常見的快捷方式(或是 OS X 中的替身),Linux 中常用它來解決一些庫版本的問題,通常也

Linux檔案連結連結的聯絡區別

在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號inode 。軟連線,其實就是新建立一個檔案,這個檔案就是專門用來指向別的檔案的(那就和windows 下的快捷方式的那個檔案有很接近的意味)。軟連結產生的是一個新的檔案,但這個

詳解Linux系統中連線連結區別與聯絡

Linux 系統中有軟連線和硬連結兩種特殊的“檔案”。 其中軟連線實際上可以看作是Windows中的快捷方式,而硬連結則可以看作類似於一個檔案的 “指標”(也不完全相同) 。 建立方法都很簡單: 1. 軟連線(符號連結) ln -s   source  target  2

Linux連結連結

硬連結就是同一個檔案使用了多個別名(他們有共同的inode編號)。 硬連結可由命令link或in建立,如 link existing-file new-link ln existing-file new-link 由於硬連結有著相同的inode編號,因

Linux中的In命令-連結連結

ln是linux中一個非常重要命令。它的功能是為某一個檔案在另外一個位置建立一個同步的連結,這個命令最常用的引數是-s,具體用法是:  ln -s  原始檔 目標檔案    -s 是 symbolic的意思。  例:ln  -s  /lib/lsb   /usr/lj 即:在usr目錄下建立指向/lib/ls

Linux連結連結區別

由於下面會說到inode,所以如果沒有了解過,請務必搞懂inode的真正含義,厚顏無恥的推薦我的一篇部落格: Linux磁碟與檔案系統管理 如果我們在系統中新建一個檔案,我們看到的檔名實際上只是表面現象,本質上會分配一個inode給我們用,inode記錄的