【Linux】常用命令之ln、chmod、scp
目錄
一、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]...][,...]
其中:
- u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
- + 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
- 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。
其他引數說明:
- -c : 若該檔案許可權確實已經更改,才顯示其更改動作
- -f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
- -v : 顯示許可權變更的詳細資料
- -R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞迴的方式逐個變更)
- --help : 顯示輔助說明
- --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命令是無法起作用的。