1. 程式人生 > >linux下建立、刪除軟、硬連結

linux下建立、刪除軟、硬連結

在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體在,從而實現檔案的快速訪問。

連結是一種在共享檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。Linux中包括兩種連結:硬連結(Hard Link)和軟連結(Soft Link),軟連結又稱為符號連結(Symbolic link)。符號連線相當於Windows下的快捷方式。

一、硬連結

硬連結說白了是一個指標,指向檔案索引節點,系統並不為它重新分配inode。可以用:ln命令來建立硬連結。
語法:
ln [options] existingfile newfile(sexistingfile 待建立連結檔案的檔案,newfile是新建立的連結檔案)
ln [options] existingfile-list directory

-f 建立時,將同檔案名刪除.
-i 刪除前進行詢問.

ln -s abc cde 建立abc 的軟連線
ln abc cde 建立abc的硬連線,

用法:
第一種:為”existingfile”建立硬連結,檔名為”newfile”。
第二種:在”directory”目錄中,為”existingfile-list”中包含的所有檔案建立一個同名的硬連結。
常用可選[options] –f 無論”newfile”存在與否,都建立連結。-n 如果”newfile”已存在,就不建立連結。

下面舉一些例子:

[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
[

[email protected] test]# ln file2 file2hand
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]#

注意在建立連結前,file1 顯示的連結數目為1,建立連結後file1和file1hard的連結數目都變為2;file1和file1hard在inode號是一樣的file1和file1hard顯示的檔案大小也是一樣。可見進行了ln命令的操作結果:file1和file1hard是同一個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案file1的硬連結,就是為file1的檔案索引節點在當前目錄上建立一個新指標。你可以刪除其中任何一個,如rm file2 ,每次只會刪除一個指標,連結數同時減一,當連結數減為0時,核心才會把檔案內容從磁碟上刪除。

還可以在不同目錄,但同一檔案系統中建立檔案的硬連結。設file1、file2在目錄/home/root/dir1中,下面的命令,在/home/root中建立file2的硬連結。

ln file2 /home/root/file2hard
下面的程式,是將dir1目錄中所有檔案,在目錄dir2中建立硬連結
#mkdir dir2
#ln /home/root/dir1/* /home/root/dir2

如果使用了 ln –f existingfile newfile,如果newfile已經存在,則無論原來newfile是什麼檔案,只用當前使用者對它有寫許可權,newfile就成為exisitngfile的硬連結檔案。

儘管硬連結節省空間,也是Linux系統整合檔案系統的傳統方式,但是存在一下不足之處:
(1)不可以在不同檔案系統的檔案間建立連結
(2)只有超級使用者才可以為目錄建立硬連結。

二、軟連結(符號連結)

軟連結克服了硬連結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號連結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行連結。
建立軟連結,只要在ln後面加上選項 –s,下面舉個例子

[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[[email protected] test]# ln -s file1 file1soft
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

從上面連結後的結果可以看出來軟連結與硬連結,區別不僅僅是在概念上,在實現上也是不同的。區別:硬連結原檔案&連結檔案公用一個inode號,說明他們是同一個檔案,而軟連結原檔案&連結檔案擁有不同的inode號,表明他們是兩個不同的檔案;在檔案屬性上軟連結明確寫出了是連結檔案,而硬連結沒有寫出來,因為在本質上硬連結檔案和原檔案是完全平等關係;連結數目是不一樣的,軟連結的連結數目不會增加;檔案大小是不一樣的,硬連結檔案顯示的大小是跟原檔案是一樣的,這用強調,因為是等同的嘛,而這裡軟連結顯示的大小與原檔案就不同了,file1大小是48B,而file1soft是5B,這裡面的5實際上就是“file1”的大小。

總之,建立軟連結就是建立了一個新檔案。當訪問連結檔案時,系統就會發現他是個連結檔案,它讀取連結檔案找到真正要訪問的檔案。
在不同系統之間建立軟連結、對目錄建立連結,這裡就不舉例了,讀者可以自己去嘗試,我也是在不斷實踐中學習的。
當然軟連結也有硬連結沒有的缺點,因為連結檔案包含有原檔案的路徑資訊,所以當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了~~,而硬連結就沒有這個缺陷,你想怎麼移就怎麼移(呵呵);還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。

補充一下:可以通過symlink來檢視連結檔案,可以用 man symlink來學習。

三、刪除連結

有建立就有刪除

rm -rf symbolic_name 注意不是rm -rf symbolic_name/

[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]# rm -rf file1soft
[[email protected] test]# ls -il
總計 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[[email protected] test]#

————————————
linux 軟連線和硬連結的區別:
————————————

4點不同 :
(1)軟連線可以 跨檔案系統 ,硬連線不可以 。
實踐的方法就是用共享檔案把windows下的 aa.txt文字文件連線到linux下/root目錄 下 bb,cc . ln -s aa.txt
/root/bb 連線成功 。ln aa.txt /root/bb 失敗 。

(2)關於 I節點的問題 。硬連線不管有多少個,都指向的是同一個I節點,會把 結點連線數增加 ,只要結點的連線數不是 0,檔案就一直存在 ,不管你刪除的是

原始檔還是 連線的檔案 。只要有一個存在 ,檔案就 存在 (其實也不分什麼 原始檔連線檔案的 ,因為他們指向都是同一個 I節點)。 當你修改原始檔或者連線檔案

任何一個的時候 ,其他的 檔案都會做同步的修改 。軟連結不直接使用i節點號作為檔案指標,而是使用檔案路徑名作為指標。所以 刪除連線檔案 對原始檔無影響,但

是 刪除 原始檔,連線檔案就會找不到要指向的檔案 。軟連結有自己的inode,並在磁碟上有一小片空間存放路徑名.

(3)軟連線可以對一個不存在的檔名進行連線 。

(4)軟連線可以對目錄進行連線。

備註:I節點 :它是UNIX內部用於描述檔案特性的資料結構.我們通常稱I節點為檔案索引結點(資訊結點).i節點 含有關於檔案的大部分的重要信 息,包括檔案資料塊在

磁碟上的地址.每一個I節點有它自己的標誌號,我們稱為檔案順序號.I節點包含的資訊 1.檔案型別 2.檔案屬主關係 3.檔案的訪問許可權 4.檔案的時間截.

文章轉自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/05/2199534.html

相關推薦

linux建立刪除連結

在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體在,從而實現檔案的快速訪問。 連結是一種在共享檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。Linux中包括兩種連結:硬連結

Linux建立刪除使用者

在Linux下建立使用者和刪除使用者,必須在root使用者下,如果你當前不是用根使用者登入,你可以開啟終端,輸入"su root"命令,再輸入根口令,就可以進入root使用者模式下,如下所示: 建立使用者(useradd): (1)用useradd命令建立使用者建立使用者: 語法: useradd

Linux創建和刪除鏈接 可臨時處理空間不足

clas 就會 blog file 兩種 而是 也有 符號連接 總計 在Linux系統中,內核為每一個新創建的文件分配一個Inode(索引結點),每個文件都有一個惟一的inode號。文件屬性保存在索引結點裏,在訪問文件時,索引結點被復制到內存在,從而實

linux創建和刪除鏈接

在linux下創建和刪除軟、硬鏈接說明:在安裝Mysql時,采用軟鏈接的方式來訪問Mysql安裝包,這樣可以避免後期升級,而且不方便知曉其版本,軟鏈接和硬鏈接操作如下 來源地址:https://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/05/2199

Linux建立檔案目錄連結連結的方法

1. 使用方式:ln [option] source_file dist_file              -f 建立時,將同檔案名刪除              -i 刪除前進行詢問       

linux新建(mkdir)刪除(rmdir)資料夾

mkdir: 該命令:mkdir  ./folder2/folder3                   ./

Linux建立檢視提取和修改靜態庫(*.a)

先說明一點,靜態庫檔案是由多個目標檔案打包而成的,在windows下靜態庫檔案的字尾是.lib,而在linux下靜態庫檔案的字尾是.a(a是archive的縮寫,也就是文件檔案)。   廢話少說,下面直接進入主題。   1.建立兩個c檔案:addition.c 和 mul

Linux系統建立tomcat快捷啟動停止以及檢視日誌方式的方式

1.建立bash指令碼tomcat檔案 vi /etc/init.d/tomcat 2.在tomcat中寫入一下指令碼內容 # !/bin/bash # Description: start or stop the tomcat # Usage: tom

linux建立使用者使用者組及賦予sudoer許可權

如現在建立使用者hadoop、使用者組hadoop,並賦予使用者hadoop以sudo許可權。 以下命令均需要超級使用者執行。 1 建立使用者組hadoop groupadd hadoop 2 建立使用者hadoop並新增進使用者組hadoop useradd -d /home/hadoop -g h

linux建立symlinksymlinkat和readlinkreadlinkat

linux下建立和讀取符號連結symlink、symlinkat和readlink、readlinkat函式使用心得。 程式碼: #include<unistd.h> int symlink(const char*actualpath,const ch

Linux建立開啟寫入檔案操作

    linux下既然把所有的裝置都看作檔案來處理,就要熟練使用linux下檔案操作的相關API。 #include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #incl

linux磁盤分區格式化掛載

格式 設置 4.6 linux /dev/ 劃分 5% 內存 logs 各種設備在linux下的文件名 實驗: 1) 開啟Linux系統前添加一塊大小為15G的SCSI硬盤2) 開啟系統,右擊桌面,打開終端3) 為新加的硬盤分區,一個主分區大小為5G,剩余空間給擴展分

Linux安裝Python3.5.2Djangoparamiko

roo help 更新 pip3 sim egg pan man inf 1,安裝依賴文件: yum install zlib zlib-devel openssl openssl-devel 2,下載Python3.5.2: 安全連接時,要增加:--no-chec

linuxVSFTPD的主動模式被動模式和虛擬用戶登錄配置。

local ces -o 註意 linu lin guest 默認 connect 主動模式: 以CENTOS為例。 1、在 root 權限下,通過命令 yum install vsftpd 安裝 vsftp。 2、啟動 vsftpd 服務之前,需要登錄雲服務器修改配置文件

Linux使用java獲取cpu記憶體使用率

原文地址:http://www.voidcn.com/article/p-yehrvmep-uo.html 思路如下:Linux系統中可以用top命令檢視程序使用CPU和記憶體情況,通過Runtime類的exec()方法執行命令"top”,獲取"top"的輸出,從而得到CPU和記憶體的使用情況。

【Python】Anaconda建立環境刪除環境啟用環境退出環境從映象源下載

1、建立環境(例子為建立一個叫做py36,python版本3.6的環境) conda create -n py36 python=3.6 2、刪除環境(例子為刪除名為py36的環境) conda remove -n py36 --all 3、啟用環境(例子為啟用名為py36的環境)

Linux偵錯程式GDBmakefile的使用

  前面的幾篇部落格中我們講解了Linux下的編輯器vim、編譯器gcc和g++,今天我們來介紹一下其他常用的三種工具,它們分別是程式偵錯程式:GDB、程式碼檢視器:ctags、還有一個輔助工程的工具:Makefile 程式偵錯程式:GDB 在windos下我們常用vs編輯器中自帶

RichEditor——一款基於RecyclerView實現的富文字編輯器實現方案(支援圖文轉義生成MarkDown粗體斜體劃線刪除連結標題等)

前言 對於富文字編輯器的實現,首先我們肯定會想到實現的編輯器需要支援的幾個必要特性: 1.涉及大量文字,圖片,文字樣式的展示與編輯。 2.涉及極其複雜的使用者互動。 目前Github上我所瞭解的富文字編輯器基本上實現方式基於兩種: * 1.基於WebView

OARACLE——建立表空間使用者許可權刪除使用者匯入匯出

1、使用sys使用者登入,連線為SYSDBA; 2、查詢表空間資料資料夾在伺服器上的路徑,得到資料夾的路徑為D:\ORACLE\PRODUCT\10.2.0\ORADATA\YWSJ\; Select FILE_NAME FROM DBA_DATA_FILES; 3、建立表空間 CR

MySql----表(建立刪除修改表)

一:建立表 建立表語法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校驗規則 engine 儲存引擎; fi