1. 程式人生 > >【Linux】常用命令之ln、chmod、scp

【Linux】常用命令之ln、chmod、scp

目錄

 

一、ln 建立軟/硬連結

二、chmod 修改檔案或目錄的許可權

三、scp 不同linux系統之間複製檔案和目錄


一、ln 建立軟/硬連結

它的功能是為某一個檔案在另外一個位置建立一個同步的連結。

當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在 其它的目錄下用ln命令連結(link)它就可以,不必重複的佔用磁碟空間。

1、命令

ln [引數][原始檔或目錄][目標檔案或目錄]

ln 原始檔名 連結名 -----為原始檔建立一個硬連結

ln -s 原始檔/目錄名 連結名-------為原始檔或目錄建立一個軟連結

 

2、軟連結 和 硬連結的區別

 

軟連結:

  • 以路徑的形式存在,其中儲存原始檔的路徑,類似於Windows作業系統中的快捷方式
  • 可以 跨檔案系統 ,硬連結不可以
  • 可以對一個不存在的檔名進行連結
  • 可以對目錄進行連結

硬連結:

  • 以檔案副本的形式存在,儲存的是實際資料塊的inode號,不佔用實際空間。
  • 不允許給目錄建立硬連結
  • 只能在同一個檔案系統中建立

 

不論是硬連結或軟連結都不會將原本的檔案內容複製一份,只會佔用非常少量的磁碟空間。

 

3、原理

在linux系統下一切皆檔案,目錄它也是一個檔案,只不過在它裡面儲存的是一張表的檔案。

而節點就類似程式語言中陣列的下標,我們可以把每個檔案都看成是陣列中的元素,而知道了節點號,就可以找到實質的檔案內容了。

 

硬連結(hard link):

檔案A是檔案B的硬連結,則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的檔名,兩個檔名指向同一個檔案,A和B對檔案系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個檔名,inode節點上的連結數增加一,每刪除一個對應的檔名,inode節點上的連結數減一,直到為0,inode節點和對應的資料塊被回收。

 

注:檔案和檔名是不同的東西,rm A刪除的只是A這個檔名,而A對應的資料塊(檔案)只有在inode節點連結數減少為0的時候才會被系統回收。

硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。只刪除一個連線並不影響節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

 

軟連結(soft link):

A是B的軟連結(A和B都是檔名),A的目錄項中的inode節點號與B的目錄項中的inode節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的資料塊。但是A的資料塊中存放的只是B的路徑名(可以根據這個找到B的目錄項)。A和B之間是“主從”關係,如果B被刪除了,A仍然存在(因為兩個是不同的檔案),但指向的是一個無效的連結。

 

二、chmod 修改檔案或目錄的許可權

Linux/Unix 的檔案呼叫許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所呼叫。

命令語法: chmod [options] mode file...

1、引數說明

mode : 許可權設定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  1. u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
  2. + 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
  3. r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。

此外,chmod也可以用數字來表示許可權 :

語法為:

chmod abc file

其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。

r=4,w=2,x=1

  • 若要rwx屬性則4+2+1=7;
  • 若要rw-屬性則4+2=6;
  • 若要r-x屬性則4+1=5。

 

其他引數說明:

  1. -c : 若該檔案許可權確實已經更改,才顯示其更改動作
  2. -f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
  3. -v : 顯示許可權變更的詳細資料
  4. -R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞迴的方式逐個變更)
  5. --help : 顯示輔助說明
  6. --version : 顯示版本

 

2、例項

(1)將檔案 file1.txt 設為所有人皆可讀取 :

chmod ugo+r file1.txt

或 chmod 744 file1.txt

或 chmod a+r file1.txt

(2)將檔案 file1.txt 與 file2.txt 設為該檔案擁有者、與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :

chmod ug+w,o-w file1.txt file2.txt

或 chmod 774 file1.txt file2.txt

(3)將 ex1.py 設定為只有該檔案擁有者可以執行 :

chmod u+x ex1.py

或 chmod 544/744 ex1.py

(4)將當前目錄下的所有檔案與子目錄皆設為任何人可讀取 :

chmod -R a+r *

或 chmod -R 744/544/644 *

(5)chmod a=rwx file

和 chmod 777 file 效果相同

(6)chmod ug=rwx,o=x file

和 chmod 771 file 效果相同

(7)若用chmod 4755 filename可使此程式具有root的許可權

 

三、scp 不同linux系統之間複製檔案和目錄

scp(secure copy),是linux系統下基於ssh登陸進行安全的遠端檔案拷貝命令。

scp [可選引數] file_source file_target

1、從本地複製到遠端

     複製檔案的命令格式:

scp local_file [email protected]_ip:remote_folder

或者 scp local_file [email protected]_ip:remote_file

或者 scp local_file remote_ip:remote_folder

或者 scp local_file remote_ip:remote_file

  • 第1,2個指定了使用者名稱,命令執行後需要再輸入密碼,第1個僅指定了遠端的目錄,檔名字不變,第2個指定了檔名;
  • 第3,4個沒有指定使用者名稱,命令執行後需要輸入使用者名稱和密碼,第3個僅指定了遠端的目錄,檔名字不變,第4個指定了檔名;

應用例項:

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music

scp /home/space/music/1.mp3 [email protected]:/home/root/others/music/001.mp3

scp /home/space/music/1.mp3 www.wetest.com:/home/root/others/music

scp /home/space/music/1.mp3 192.168.172.1:/home/root/others/music/001.mp3

 

    複製目錄的命令格式,-r:

scp -r local_folder [email protected]_ip:remote_folder

或者 scp -r local_folder remote_ip:remote_folder

  • 第1個指定了使用者名稱,命令執行後需要再輸入密碼;
  • 第2個沒有指定使用者名稱,命令執行後需要輸入使用者名稱和密碼;

應用例項:

scp -r /home/space/music/ [email protected]:/home/root/others/

scp -r /home/space/music/ www.wetest.com:/home/root/others/

上面命令將本地 music 目錄複製到遠端 others 目錄下。

 

2、從遠端複製到本地

只要將從本地複製到遠端的命令的後2個引數調換順序即可,如下例項:

scp [email protected]:/home/root/others/music /home/space/music/1.mp3

scp -r www.wetest.com:/home/root/others/ /home/space/music/

 

說明

1.如果遠端伺服器防火牆有為scp命令設定了指定的埠,我們需要使用 -P 引數來設定命令的埠號,命令格式如下:

#scp 命令使用埠號 4588

scp -P 4588 [email protected]:/usr/local/sin.sh /home/administrator

2.使用scp命令要確保使用的使用者具有可讀取遠端伺服器相應檔案的許可權,否則scp命令是無法起作用的。