Linux遠程復制scp和rsync區別


一、scp

scp是secure copy的簡寫,用於在Linux下進行遠程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨服務器,而且scp傳輸是加密的,它使用ssh安全協議傳輸數據。
 
scp系統開消小不占資源,不會提高多少系統負荷。雖然 rsync只傳送修改的部分。

1.命令格式:

scp [參數] [原路徑] [目標路徑]

1)復制文件: 

scp 本地文件名 遠端用戶名@遠端主機IP:新文件名
scp /test.txt root@172.16.70.71:/home/newtest.txt
 
scp local_file remote_username@remote_ip:remote_file 
scp local_file remote_ip:remote_folder   
scp local_file remote_ip:remote_file 
指定了用戶名的,只需輸入密碼。沒有指定的,會指示輸入用戶和密碼

2)復制目錄:(復制目錄要參數-r)

scp -r local_folder remote_username@remote_ip:remote_folder 
 
scp -rp /data root@172.16.70.71:/home #-r 遞歸復制整個目錄,-p保留原文件的修改時間,訪問時間和訪問權限

3)從遠程服務器復制到本地服務器:

從遠程復制到本地,只要將從本地復制到遠程的命令后面2個參數互換順序就行了。
scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

4)scp默認是22端口,如果改變端口要用大寫的-P參數

scp -P 7777 -rp /data root@172.16.70.71:/my/backup/

2.命令參數:

-1 強制scp命令使用協議ssh1 
-2 強制scp命令使用協議ssh2 
-4 強制scp命令只使用IPv4尋址 
-6 強制scp命令只使用IPv6尋址 
-B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語) 
-C 允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能) 
-p 保留原文件的修改時間,訪問時間和訪問權限。 
-q 不顯示傳輸進度條。 
-r 遞歸復制整個目錄。 
-v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題。  
-c cipher 以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。  
-F ssh_config 指定一個替代的ssh配置文件,此參數直接傳遞給ssh。 
-i identity_file 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。   
-l limit 限定用戶所能使用的帶寬,以Kbit/s為單位。    
-o ssh_option 如果習慣於使用ssh_config(5)中的參數傳遞方式,  
-P port 注意是大寫的P, port是指定數據傳輸用到的端口號  
-S program 指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項。

二、rsync

rsync (remote synchronize)顧名思意就知道它是一款實現遠程同步功能的軟件, 它在同步文件的同時,可以保持原來文件的權限、時間、軟硬鏈接等附加信息。
 
rsync是一個數據鏡像及備份工具,具有可使本地和遠程兩台主機的文件,目錄之間,快速同步鏡像,遠程數據備份等功能。在同步過程中,rsync是根據自己獨特的算法,只同步有變化的文件,甚至在一個文件里只同步有變化的部分,所以可以實現快速的同步數據的功能。

1. 命令格式

rsync [OPTION] SRC DEST
拷貝本地文件,SRC源、DES目的。如:
rsync -avz /data /backup
rsync [OPTION] SRC [USER@]host:DEST
使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。如:rsync -avz *.c 172.16.70.71:/tmp
 
rsync [OPTION] [USER@]HOST:SRC DEST
使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。如:rsync -avz root@172.16.70.71:/tmp /data
 
rsync [OPTION] [USER@]HOST::SRC DEST
從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。如:rsync -avzP root@172.16.70.71::www /databack
 
rsync [OPTION] SRC [USER@]HOST::DEST
從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啟動該模式。如:rsync -avzP /databack root@172.16.70.71::www
 
rsync [OPTION] rsync://[USER@]HOST[:PORT]/SRC [DEST]
這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。如:rsync -v rsync://root@192.168.78.192:8888/www /databack

2. rsync命令同步參數:

一般最常用的選項組合:-avzP 來進行傳輸,
 
rsync的同步參數選項:
-a :歸檔模式,表示以遞歸模式傳輸文件,並保持文件所有屬性相當於-rtopgdl
-v :詳細模式輸出,傳輸時的進度等信息
-z :傳輸時進行壓縮以提高效率—compress-level=num可按級別壓縮
-r :對子目錄以遞歸模式,即目錄下的所有目錄都同樣傳輸。
-t :保持文件的時間信息—time
-o :保持文件屬主信息owner
-p :保持文件權限
-g :保持文件的屬組信息
-P :--progress 顯示同步的過程及傳輸時的進度等信息
-e :使用的信道協議,指定替代rsh的shell程序。例如:ssh
-D :保持設備文件信息
-l :--links 保留軟連接
--progress :顯示備份過程
--delete :刪除那些DST中SRC沒有的文件
--exclude=PATTERN  指定排除不需要傳輸的文件模式
-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不覆蓋更新的文件)
-b, --backup 創建備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名為~filename。
-suffix=SUFFIX 定義備份文件前綴
-stats 給出某些文件的傳輸狀態
-R, --relative 使用相對路徑信息 如:rsync foo/bar/foo.c remote:/tmp/ 則在/tmp目錄下創建foo.c文件,而如果使用-R參數:rsync -R foo/bar/foo.c remote:/tmp/ 則會創建文件/tmp/foo/bar/foo.c,也就是會保持完全路徑信息。
--config=FILE 指定其他的配置文件,不使用默認的rsyncd.conf文件
--port=PORT 指定其他的rsync服務端口
 
*rsync服務器部署參見另外的文章

三、補充cp

cp(copy)命令
功能說明:復制文件或目錄。 
語  法:cp [-abdfilpPrRsuvx][-S <備份字尾字符串>][-V <備份方式>][--help][--spares=<使用時機>][--version][源文件或目錄][目標文件或目錄] [目的目錄] 
 
補充說明:cp指令用在復制文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄復制到該目錄中。若同時指定多個文件或目錄,而最后的目的地並非是一個已存在的目錄,則會出現錯誤信息。
參  數:
 -a或--archive  此參數的效果和同時指定"-dpR"參數相同。 
 -b或--backup  刪除,覆蓋目標文件之前的備份,備份文件會在字尾加上一個備份字符串。 
 -d或--no-dereference  當復制符號連接時,把目標文件或目錄也建立為符號連接,並指向與源文件或目錄連接的原始文件或目錄。 
 -f或--force  強行復制文件或目錄,不論目標文件或目錄是否已存在。 
 -i或--interactive  覆蓋既有文件之前先詢問用戶。 
 -l或--link  對源文件建立硬連接,而非復制文件。 
 -p或--preserve  保留源文件或目錄的屬性。 
 -P或--parents  保留源文件或目錄的路徑。 
 -r  遞歸處理,將指定目錄下的文件與子目錄一並處理。 
 -R或--recursive  遞歸處理,將指定目錄下的所有文件與子目錄一並處理。 
 -s或--symbolic-link  對源文件建立符號連接,而非復制文件。 
 -S<備份字尾字符串>或--suffix=<備份字尾字符串>  用"-b"參數備份目標文件后,備份文件的字尾會被加上一個備份字符串,預設的備份字尾字符串是符號"~"。 
 -u或--update  使用這項參數后只會在源文件的更改時間較目標文件更新時或是 名稱相互對應的目標文件並不存在,才復制文件。 
 -v或--verbose  顯示指令執行過程。 
 -V<備份方式>或--version-control=<備份方式>  用"-b"參數備份目標文件后,備份文件的字尾會被加上一個備份字符串,這字符串不僅可用"-S"參數變更,當使用"-V"參數指定不同備份方式時,也會產生不同字尾的備份字串。  
 -x或--one-file-system  復制的文件或目錄存放的文件系統,必須與cp指令執行時所處的文件系統相同,否則不予復制。 
 --help  在線幫助。 
 --sparse=<使用時機>  設置保存稀疏文件的時機。 
 --version  顯示版本信息。
 
 
遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
來源:https://blog.csdn.net/openbox2008/java/article/details/80524214

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM