RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用SCP和Rsync遠(yuǎn)程拷貝文件

馬哥Linux運(yùn)維 ? 來源:博客園-散盡浮華 ? 2024-09-29 15:54 ? 次閱讀

scp是secure copy的簡寫,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件的命令,和它類似的命令有cp,不過cp只是在本機(jī)進(jìn)行拷貝不能跨服務(wù)器,而且scp傳輸是加密的??赡軙?huì)稍微影響一下速度。當(dāng)你服務(wù)器硬盤變?yōu)橹蛔x read only system時(shí),用scp可以幫你把文件移出來。另外,scp還非常不占資源,不會(huì)提高多少系統(tǒng)負(fù)荷,在這一點(diǎn)上,rsync就遠(yuǎn)遠(yuǎn)不及它了。雖然 rsync比scp會(huì)快一點(diǎn),但當(dāng)小文件眾多的情況下,rsync會(huì)導(dǎo)致硬盤I/O非常高,而scp基本不影響系統(tǒng)正常使用。scp在夸機(jī)器復(fù)制的時(shí)候?yàn)榱颂岣邤?shù)據(jù)的安全性,使用了ssh連接和加密方式,如果機(jī)器之間配置了ssh免密碼登錄,那在使用scp的時(shí)候密碼都不用輸入。

一般而言,我們會(huì)選擇使用rsync進(jìn)行遠(yuǎn)程同步或拷貝。rsync和scp的區(qū)別在于:
->rsync只對差異文件做更新,可以做增量或全量備份;而scp只能做全量備份。簡單說就是rsync只傳修改了的部分,如果改動(dòng)較小就不需要全部重傳,所以rsync備份速度較快;默認(rèn)情況下,rsync 通過比較文件的最后修改時(shí)間(mtime)和文件的大?。╯ize)來確認(rèn)哪些文件需要被同步過去。
->rsync是分塊校驗(yàn)+傳輸,scp是整個(gè)文件傳輸。rsync比scp有優(yōu)勢的地方在于單個(gè)大文件的一小部分存在改動(dòng)時(shí),只需傳輸改動(dòng)部分,無需重新傳輸整個(gè)文件。如果傳輸一個(gè)新的文件,理論上rsync沒有優(yōu)勢;
->rsync不是加密傳輸,而scp是加密傳輸,使用時(shí)可以按需選擇。

SCP拷貝命令中常用的幾個(gè)參數(shù)說明

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

Rsync拷貝命令中常用的幾個(gè)參數(shù)說明

-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-v, --verbose 詳細(xì)模式輸出
-p, --perms 保持文件權(quán)限
-g, --group 保持文件屬組信息
-o, --owner 保持文件屬主信息
-r, --recursive 對子目錄以遞歸模式處理。同步目錄的時(shí)候要加上這個(gè)參數(shù)
-l, --links 保留軟鏈結(jié),加上這個(gè)參數(shù),同步過來的文件會(huì)保持之前的軟鏈接屬性不變
-H, --hard-links 保留硬鏈結(jié)
-e, --rsh=COMMAND 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
-z, --compress 對備份的文件在傳輸時(shí)進(jìn)行壓縮處理
--stats 給出某些文件的傳輸狀態(tài)
--progress 打印同步的過程
--timeout=TIME 同步過程中,IP超時(shí)時(shí)間,單位為秒
--delete 刪除那些目標(biāo)目錄中有而源目錄中沒有的多余文件。這個(gè)是rsync做增量方式的全備份的最佳選擇方案!?。。。?!
--delete-before 接受者在輸出之前進(jìn)行刪除操作。即先將目標(biāo)目錄中文件全部刪除,再將源目錄文件拷貝過去。這是rsync保持目標(biāo)目錄跟源目錄一致的方案?。?!
--delete-after 在同步操作之后做比較,刪除那些目標(biāo)目錄中有而源目錄中沒有的多余文件
--delete-excluded 刪除目標(biāo)目錄中那些被該選項(xiàng)指定排除的文件
--ignore-errors 即使出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除,忽略錯(cuò)誤
--exclude 指定同步時(shí)需要過濾掉的文件或子目錄(即不需要同步過去的),后面直接跟不需要同步的單個(gè)文件名或子目錄(不需要跟路徑) ,過濾多個(gè)文件或子目錄,就使用多個(gè)--exclude
--exclude-from 指定同步時(shí)需要過濾掉的文件或子目錄,后面跟文件(比如/root/exclue.txt),然后將不需要同步的文件和子目錄放到/root/exclue.txt下。
--version 打印版本信息
--port=PORT 指定其他的rsync服務(wù)端口
--log-format=formAT 指定日志文件格式
--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS 限制I/O帶寬,KBytes per second

在使用SCP和Rsync進(jìn)行遠(yuǎn)程同步的時(shí)候,需要注意下面幾個(gè)技巧:

1)遠(yuǎn)程拷貝時(shí)的軟鏈接處理

用rsync遠(yuǎn)程拷貝目錄時(shí),只需要加上-l參數(shù)就可以實(shí)現(xiàn)拷貝軟鏈接。
 
用scp遠(yuǎn)程拷貝目錄時(shí), 那么目錄下的軟鏈會(huì)丟失,如果想要軟鏈接也拷貝過去,正確的做法是:
1)在源服務(wù)器上, 打包, tar zcvf test.tar.gz test
2)把源服務(wù)器上的test.tar.gz拷貝到目標(biāo)服務(wù)器上
3)在目標(biāo)服務(wù)器上執(zhí)行tar zxvf test.tar.gz, 進(jìn)行解包, 可以看到, 軟鏈接保持得好好的。

2)遠(yuǎn)程拷貝時(shí)的進(jìn)度條顯示

1)rsync命令
[root@dbtest bak]# rsync -e "ssh -p22222" -avpgolr --progress db170630.tar.gz 192.168.1.198:/data/upload/
root@192.168.1.198's password:
sending incremental file list
db170630.tar.gz
702087168 4% 5.60MB/s 0:41:47
 
--progress 可以實(shí)現(xiàn)本機(jī)帶進(jìn)度條提示拷貝,可以實(shí)現(xiàn)不同機(jī)器帶進(jìn)度條提示拷貝,可以拷貝多個(gè)文件
 
2)scp命令
[root@dbtest bak]# scp -v /mnt/full20100526.tar.gz /usr/local/src/
[以上命令] 本機(jī)拷貝無法顯示進(jìn)度
 
[root@dbtest bak]# scp -v /mnt/full20100526.tar.gz root@192.168.1.1:/usr/local/src/
[以上命令] 不同機(jī)器拷貝可以顯示進(jìn)度條,即使不帶"-v"參數(shù)也可以顯示進(jìn)度條
 
[root@dbtest bak]# scp -v /mnt/full20100526.tar.gz root@127.0.0.1:/usr/local/src/
[以上命令] 變相實(shí)現(xiàn)本機(jī)帶進(jìn)度條提示拷貝,可以不帶"-v"參數(shù)
 
3) cp命令
暫時(shí)沒有找到帶進(jìn)度條提示拷貝

3)遠(yuǎn)程拷貝時(shí)的限流

rsync拷貝命令(--bwlimit)
[root@dbtest bak]# rsync -auvz --progress --delete --bwlimit=1000 遠(yuǎn)程文件 本地文件 //限制為1000kBytes/s
[root@dbtest bak]# rsync -auvz --progress --delete --bwlimit=2048 遠(yuǎn)程文件 本地文件 //限制為2M/s
 
scp拷貝命令(-l參數(shù))
[root@dbtest bak]# scp -l 1024 file root@192.168.1.100 //限制為1M Bytes/s

4)遠(yuǎn)程拷貝時(shí)的過濾

-----rsync命令-----
需要排除某個(gè)文件(或文件夾),可以用--exclude來指定(事實(shí)上,系統(tǒng)會(huì)把文件和文件夾一視同仁)。例如:
1)需要排除源目錄下的dir1文件夾,可以寫為:
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude=dir1 /var/www/src/ /var/www/dest
 
可以同時(shí)排除多條
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude=dir1 --exclude=dir2 /var/www/src/ /var/www/dest
 
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude "file1" --exclude="file2" --exclude dir1 --exclude=dir2 /var/www/src/ /var/www/dest
 
注意:
a)過濾參數(shù)使用"--exclude"或"--exclude="都可以,參數(shù)后面跟的文件或目錄加不加引號的效果也都一樣!
b)過濾參數(shù)后面跟的文件或目錄必須直接是文件或目錄名,不能跟路徑(不管是相對路徑還是絕對路徑,否則就過濾不掉)
 
比如:下面的寫法就過濾不掉test目錄下的file1文件,不管是相對路徑還是絕對路徑
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude "/var/www/src/test/file1" /var/www/src/ /var/www/dest
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude "../test1" /var/www/src/ /var/www/dest
 
去掉路徑,使用下面的寫法就可以正常過濾了
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude "file1" /var/www/src/ /var/www/dest
 
c)另外:過濾參數(shù)還可以使用通配符 避開不想同步的文件或目錄,
例如,同步/var/www/src/目錄下的內(nèi)容到/var/www/dest目錄下,同步時(shí)過濾以test開頭的文件/目錄 以及 以data結(jié)尾的文件/目錄
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude "test*"  --exclude="*data" /var/www/src/ /var/www/dest
 
 
2)如果想要過濾同步的文件或目錄過多,可以通過--exclude-from來指定一個(gè)特定文件。例如:
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude-from=exclude.list /var/www/src/ /var/www/dest
  
exclude.list文件中指定需要排除的文件或目錄列表(這個(gè)文件前面的參數(shù)只能是--exclude-from)
[root@dbtest bak]# cat exclude.list
dir1
[0-9]*
dir2/.[a-z0-9]*
.svn
 
或者
[root@dbtest bak]# /usr/bin/rsync -vzrtopg --exclude-from="/data/bak/exclude.list" /var/www/src/ /var/www/dest
 
注意:
a)過濾參數(shù)使用"--exclude-from"或者"--exclude-from="都可以,后面的文件名加不加引號效果也都一樣。
b)這里過濾參數(shù)后面跟的exclude.list文件,為了避免出問題,最好設(shè)置為絕對路徑。但是里面的內(nèi)容一定要寫為相對路徑(即當(dāng)前同步源目錄下的相對路徑或直接是文件名/目錄名)
c)exclude和exclude-from前面都是有兩個(gè)減號,如果漏寫了一個(gè),命令行不會(huì)報(bào)錯(cuò),但是不能排除執(zhí)行的文件或文件夾。
 
-----scp命令-----
結(jié)合find命令進(jìn)行操作,例如:
將/data目錄下除了ms目錄之外的所有目錄及文件遠(yuǎn)程拷貝到10.0.11.202機(jī)器的/data目錄下
[root@dbtest bak]# for i in `find /data/ -type d -path /data/ms -prune -o -print |awk -F"/" '{print $3}'|sort|uniq`;do /usr/bin/scp -r /data/$i root@10.0.11.202:/data/;done

5)遠(yuǎn)程拷貝時(shí)的隱藏文件

-----rsync命令-----
如下(注意帶/)
可以將/path/to/source/目錄下所有的文件(包括隱藏文件)一起拷貝到192.168.1.5機(jī)器的/path/to/dest/目錄下
[root@dbtest bak]# rsync -e "ssh -p22" -avpgolr /path/to/source/ user@192.168.1.5:/path/to/dest/
  
如下(注意帶/*)
可以將/path/to/source/目錄下所有的文件(不包括隱藏文件)一起拷貝到192.168.1.5機(jī)器的/path/to/dest/目錄下
[root@dbtest bak]# rsync -e "ssh -p22" -avpgolr /path/to/source/* user@192.168.1.5:/path/to/dest/
  
-----scp命令-----
如下(注意帶)
可以將/path/to/source/目錄下所有的文件(包括隱藏文件)一起拷貝到192.168.1.5機(jī)器的/path/to/dest/目錄下
[root@dbtest bak]# scp -rp -P 22 /path/to/source/. user@192.168.1.5:/path/to/dest/
 
如果直接使用/,則就是把/path/to/source整個(gè)目錄拷貝到192.168.1.5機(jī)器的/path/to/dest/目錄下,即拷貝到遠(yuǎn)程
的目錄是/path/to/dest/source
[root@dbtest bak]# scp -rp -P 22 /path/to/source/ user@192.168.1.5:/path/to/dest/
 
如下(注意/*)
可以將/path/to/source/目錄下所有的文件(不包括隱藏文件)一起拷貝到192.168.1.5機(jī)器的/path/to/dest/目錄下
[root@dbtest bak]# scp -rp -P 22 /path/to/source/* user@192.168.1.5:/path/to/dest/
 
---------------
注意,直接使用rm或rm -rf刪除一個(gè)目錄時(shí),默認(rèn)目錄下的隱藏文件是刪除不掉的,隱藏文件需要單獨(dú)刪除,如下:
[root@dbtest ~]# cd /opt/
[root@dbtest opt]# ll -a
total 28
drwxr-xr-x.  3 root root 4096 Mar  8 15:00 .
dr-xr-xr-x. 27 root root 4096 Feb 26 03:54 ..
-rw-r--r--.  1 root root    0 Mar  8 09:47 ac
-rw-r--r--.  1 root root   45 Mar  8 09:47 a.txt
-rw-r--r--.  1 root root    0 Mar  8 09:47 bb
-rw-r--r--.  1 root root   21 Mar  8 09:45 b.txt
-rw-r--r--.  1 root root    0 Mar  8 09:47 gg
-rw-r--r--.  1 root root   52 Mar  8 15:00 .haha
drwxr-xr-x.  2 root root 4096 Mar  8 15:00 .kevin
-rw-r--r--.  1 root root   33 Mar  8 15:00 .my.cnf
[root@dbtest opt]# rm -rf ./*
[root@dbtest opt]# ll -a
total 20
drwxr-xr-x.  3 root root 4096 Mar  8 17:44 .
dr-xr-xr-x. 27 root root 4096 Feb 26 03:54 ..
-rw-r--r--.  1 root root   52 Mar  8 15:00 .haha
drwxr-xr-x.  2 root root 4096 Mar  8 15:00 .kevin
-rw-r--r--.  1 root root   33 Mar  8 15:00 .my.cnf
[root@dbtest opt]# rm -rf .haha .kevin .my.cnf
[root@dbtest opt]# ll -a
total 8
drwxr-xr-x.  2 root root 4096 Mar  8 17:44 .
dr-xr-xr-x. 27 root root 4096 Feb 26 03:54 ..

鏈接:https://www.cnblogs.com/kevingrace/p/8529792.html

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209323
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    565

    瀏覽量

    24727
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    683

    瀏覽量

    22011

原文標(biāo)題:SCP和Rsync遠(yuǎn)程拷貝的幾個(gè)技巧

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux命令詳解之scp命令

    Linux scp命令 通常用于Linux的跨主機(jī)之間的文件和目錄的復(fù)制。scp是 secure copy的縮寫, scp命令 是Linux 下基于ssh登陸進(jìn)行安全
    發(fā)表于 08-27 13:41

    imx6q scp拷貝文件到CPU,提示網(wǎng)絡(luò)掉線是為什么?怎么解決?

    大家好,在飛凌imx6q開發(fā)板上測試4.9.88內(nèi)核,scp拷貝文件到CPU,經(jīng)常提示網(wǎng)絡(luò)掉線重連。日志如下:root@imx6qsabresd:~# fec 2188000.ethernet
    發(fā)表于 01-11 07:03

    linux的scp命令怎么用_linux的grep命令用法

    在linux中,scp命令用于Linux之間復(fù)制文件和目錄,即在一臺(tái)Linux服務(wù)器中將本地的文件上傳到一臺(tái)遠(yuǎn)端服務(wù)器,或?qū)⑦h(yuǎn)端服務(wù)器的文件下載到本地。
    發(fā)表于 09-04 15:36 ?4422次閱讀
    linux的<b class='flag-5'>scp</b>命令怎么用_linux的grep命令用法

    SCP-LT8362-B-EVALZ-設(shè)計(jì)文件

    SCP-LT8362-B-EVALZ-設(shè)計(jì)文件
    發(fā)表于 03-22 14:39 ?0次下載
    <b class='flag-5'>SCP</b>-LT8362-B-EVALZ-設(shè)計(jì)<b class='flag-5'>文件</b>

    SCP-THRUBRD-EVALZ-設(shè)計(jì)文件

    SCP-THRUBRD-EVALZ-設(shè)計(jì)文件
    發(fā)表于 03-22 14:46 ?0次下載
    <b class='flag-5'>SCP</b>-THRUBRD-EVALZ-設(shè)計(jì)<b class='flag-5'>文件</b>

    Rsync遠(yuǎn)程數(shù)據(jù)同步工具簡介

    Rsync(remote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺(tái)主機(jī)間的文件。Rsync使用所謂的“Rsy
    的頭像 發(fā)表于 09-16 09:13 ?1081次閱讀

    Rsync遠(yuǎn)程數(shù)據(jù)同步工具介紹

    Rsync(remote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺(tái)主機(jī)間的文件。Rsync使用所謂的“Rsy
    的頭像 發(fā)表于 09-23 10:32 ?1047次閱讀

    Rsync遠(yuǎn)程數(shù)據(jù)同步工具簡介

    Rsync(remote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺(tái)主機(jī)間的文件。Rsync使用所謂的“Rsy
    的頭像 發(fā)表于 10-12 09:12 ?912次閱讀

    如何在Linux使用Rsync命令復(fù)制和同步文件和目錄

    Rsync用于在兩個(gè)遠(yuǎn)程計(jì)算機(jī)之間同步文件文件夾。它僅通過傳輸源和目標(biāo)之間的差異來提供快速的增量文件傳輸。
    的頭像 發(fā)表于 12-07 09:47 ?1.1w次閱讀

    如何使用cp和rsync命令復(fù)制文件和目錄

    復(fù)制文件和目錄是在使用命令行時(shí)最常見的任務(wù)之一。在Linux,有兩個(gè)命令用于復(fù)制文件cp和rsync,但cp命令比rsync更受歡迎。
    的頭像 發(fā)表于 12-07 17:39 ?6924次閱讀

    如何在Linux使用rsync命令排除文件和目錄

    Rsync是一種快速同步的命令行程序,用于在兩個(gè)計(jì)算機(jī)之間同步文件文件夾。借助Rsync,您可以鏡像數(shù)據(jù),創(chuàng)建增量備份。
    的頭像 發(fā)表于 12-23 16:49 ?7617次閱讀

    一篇文章學(xué)會(huì)數(shù)據(jù)備份利器rsync

    在Linux系統(tǒng)下數(shù)據(jù)備份的工具很多,但阿銘只用一種,那就是rsync,從字面意思上可以理解為remote sync(遠(yuǎn)程同步)。rsync不僅可以遠(yuǎn)程同步數(shù)據(jù)(類似于
    的頭像 發(fā)表于 01-04 14:38 ?654次閱讀

    如何在Linux和類Unix操作系統(tǒng)中使用SCP安全地傳輸文件

    在網(wǎng)絡(luò)上文件傳輸可以通過各種不同的方式和協(xié)議來完成。遠(yuǎn)程復(fù)制文件最常用的協(xié)議是 RsyncSCP 和 SFTP。
    的頭像 發(fā)表于 02-23 09:25 ?1536次閱讀
    如何在Linux和類Unix操作系統(tǒng)中使用<b class='flag-5'>SCP</b>安全地傳輸<b class='flag-5'>文件</b>

    使用SCPRsync在Linux中傳輸文件

    在 Linux 中,有時(shí)需要將文件從一臺(tái)計(jì)算機(jī)傳輸?shù)搅硪慌_(tái)計(jì)算機(jī)。為了完成這個(gè)任務(wù),有兩個(gè)主要的工具可以使用:SCPRsync。本文將介紹如何使用這兩個(gè)工具在 Linux 中傳輸文件
    的頭像 發(fā)表于 05-12 14:32 ?952次閱讀

    什么是rsync?如何安裝rsync?如何恢復(fù)中斷的傳輸?

    我們都使用過 scp 來傳輸文件。當(dāng)傳輸在中途或甚至在 99% 時(shí)被中斷時(shí),(每當(dāng)我想起99%的中斷傳輸時(shí),我的心都很痛);讓我們看看如何使用 rsync 來替代 scp,避免這樣的不
    的頭像 發(fā)表于 08-24 09:16 ?1456次閱讀
    RM新时代网站-首页