1. 程式人生 > >rsync 檔案同步命令 SCP命令

rsync 檔案同步命令 SCP命令

 快速查詢scp: scp  各種引數   源地址檔案    目的地址檔案
  從本地複製到遠端:
       scp   [[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2
           本地使用者名稱、地址、檔案  遠端使用者名稱、地址、檔案            host可以用ip,也可以用域名(dns可以解析) 可以省略本地資訊:       scp  file1 ... [[[email protected]]host2:]file2
      也可以省略本地資訊和遠端使用者資訊:
      scp local_file remote_ip:remote_file   從遠端複製到本地:         scp   [[[email protected]]host1:]remote_file ... [[[email protected]]host2:local_file                遠端使用者名稱、地址、檔案         本地使用者名稱、地址、檔案            host可以用ip,也可以用域名(dns可以解析)  可以省略本地資訊:       scp [[[email protected]]host2:]remote_file  local_file ... 
      也可以省略本地資訊和遠端使用者資訊:       scp  remote_ip:remote_file local_file 快速查詢 rsync
rsync [OPTION]... SRC DEST                 本機到本機   
   
rsync [OPTION]... SRC [[email protected]]host:DEST     本機到遠端(ssh shell 方式)
rsync [OPTION]... [[email protected]]HOST:SRC DEST     遠端到本機(ssh shell 方式)

rsync [OPTION]... [[email protected]]HOST::SRC DEST 遠端到本機 (rsync 服務程序方式) rsync [OPTION]... SRC [[email protected]]HOST::DEST 本機到遠端 (rsync 服務程序方式) rsync [OPTION]... rsync://[[email protected]]HOST[:PORT]/SRC [DEST]
 例子:rsync -aqe 'ssh -p 24 ' 10.11.0.45:/var/www/webroot/supp/upload/ /datepc/supp/upload
其中: 在指定複製源SRC時,路徑是否有最後的 “/” 有不同的含義,例如:

/home : 表示將整個 /home 目錄複製到目標目錄
/home/ : 表示將 /home 目錄中的所有內容複製到目標目錄

如果目標 DEST 不存在,則自動建立
SRC: 是要複製的源位置 DEST: 是複製目標位置 若本地登入使用者與遠端主機上的使用者一致,可以省略 [email protected] 當訪問 rsync 伺服器時也可以使用 rsync:// URL 當進行“拉”複製時,若指定一個 SRC 且省略 DEST,則只列出資源而不進行復制

[OPTION...]引數
如:
rsync -avzP [email protected]::hadoop /backup

說明: 同步模組: [rsyncd.conf中那個方括號裡的內容] -a, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD。 
          -r 是遞迴     -l 是連結檔案,意思是拷貝連結檔案;-p 表示保持檔案原有許可權;
         -t 保持檔案原有時間;-g 保持檔案原有使用者組;-o 保持檔案原有屬主;-D 相當於塊裝置檔案;
 -z 傳輸時壓縮;
 -v, --verbose 詳細模式輸出。
 -q, --quiet 精簡輸出模式。
 -P  --partial 保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸
 -c, --checksum 開啟校驗開關,強制對檔案傳輸進行校驗。 -R, --relative 使用相對路徑資訊。 
 -b, --backup 建立備份,也就是對於目的已經存在有同樣的檔名時,將老的檔案重新命名為~filename。
       可以使用--suffix選項來指定不同的備份檔案字首。-z 傳輸時壓縮;-v, --verbose 詳細模式輸出。
 -e  --rsh=command 指定使用rsh、ssh方式進行資料同步    例:rsync -ae 'ssh -p port'
 --progress 顯示備份過程

 --password-file=FILE    從FILE檔案中得到密碼

--exclude           指定排除不需要傳輸的檔案(夾)   (必須相對路徑)      --exclude='file'    --exclude='file/123'  
--exclude-from=/exclude.list       指定排除不需要傳輸的檔案列表     (絕對路徑)
   
    比如 我想避開log資料夾,list中的1資料夾,和fire打頭的檔案    那麼/exclude.list 寫為 
                log 
                list/1
                fire*  --include                               指定排除不需要傳輸的檔案                      rsync -a --exclude='file'  (相對路徑)
--include-from=/exclude.list  指定排除不需要傳輸的檔案列表               (絕對路徑)
(如果同時使用exclude和include,include命令在前)

--files-from="includes。txt" 只同步指定的目錄清單  
        進入正題:  rsync是類unix系統下的資料映象備份工具。         使用快速增量備份工具Remote Sync可以遠端同步,支援本地複製,或者與其他SSH、rsync主機同步。 它的特性如下:
*可以映象儲存整個目錄樹和檔案系統。
*可以很容易做到保持原來檔案的許可權、時間、軟硬連結等等。
*無須特殊許可權即可安裝。
*快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的檔案。
*rsync 在傳輸資料的過程中可      以實行*壓縮及解壓縮操作,因此可以使用更少的頻寬。
*安全:可以使用scp、ssh等方式來傳輸檔案,當然也可以通過直接的socket連線。
*支援匿名傳輸,以方便進行網站鏡象
*無論本地同步目錄還是遠端同步資料,首次執行時將會把全部檔案拷貝一次,以後再執行時將只拷貝有變化的檔案(對於新檔案)或檔案的變化部分(對於原有檔案)。  在使用 rsync 進行遠端同步時,可以使用三種種方式: 一.本機不同目錄進行同步
二.遠端 Shell 方式
(建議使用 ssh,使用者驗證由 ssh 負責)
.C/S 方式(即客戶連線遠端 rsync 伺服器,使用者驗證由 rsync 伺服器負責)。

一.本機不同目錄進行同步
同步命令:

1)本地使用: rsync [OPTION...] SRC... [DEST]  rsync -a /home/ /homeback 在指定複製源SRC時,路徑是否有最後的 “/” 有不同的含義,例如:

/home : 表示將整個 /home 目錄複製到目標目錄
/home/ : 表示將 /home 目錄中的所有內容複製到目標目錄

如果目標 DEST 不存在,則自動建立
二.通過遠端 Shell 使用:
  • 當路徑中包含 單引號:  時,啟功該模式
  • 遠端 Shell 方式(建議使用 ssh,使用者驗證由 ssh 負責)  不用建立rsync伺服器、守護程序
拉: rsync [OPTION...] [[email protected]]HOST:SRC... [DEST]
rsync -a web:/home/ /homeback

   
推: rsync [OPTION...] SRC... [[email protected]]HOST:DEST
rsync -a [email protected]:/home /homeback
如果使用者名稱USER一致的話,可以省略 host 可以使用主機名(前提是可以解析),也可以使用ip地址 三.建立rsync守護程序
  • 即客戶連線遠端 rsync 伺服器,使用者驗證由 rsync 伺服器負責
我們先來測試第二種方法,建立一臺rsync伺服器
測試使用的機器 兩臺機器都自帶有rsync工具   1. 源圖片所在 A機器 10.0.7. 211  CentOS release 6.3 (Final)
      服務端(rsync伺服器)
# rsync --version
    rsync  version 3.0.6  protocol version 30 2. 備份圖片 B機器     10.0.7.216   CentOS Linux release 7.2
     客戶端
# rsync --version    rsync  version 3.0.9  protocol version 30 Rsync兩個版本有所不同,這裡來講下
首先A機器  3.0.6版本 
[[email protected] ~]yum install rsync [[email protected] ~]rpm -ql rsync  檢視檔案位置 /etc/xinetd.d/rsync           ##基於xinetd的管理 /usr/bin/rsync                 ##rsync命令 /usr/share/doc/rsync-3.0.6  /usr/share/doc/rsync-3.0.6/COPYING  /usr/share/doc/rsync-3.0.6/NEWS 
……

軟體包組成中沒有提供配置檔案和相應的檔案,因此需要自行新增如下:

[[email protected] ~]# mkdir /etc/rsyncd  ##建立配置目錄 

[[email protected] ~]# touch /etc/rsyncd/rsyncd.conf  ##     建立主配置檔案 

[[email protected] ~]# touch /etc/rsyncd/rsyncd.secrets  ##  建立使用者密碼檔案  [[email protected] ~]chmod 600 /etc/rsyncd/rsyncd.secrets ##修改檔案許可權

[[email protected] ~]# touch /etc/rsyncd/rsyncd.motd   ##    建立定義伺服器資訊的

解析rsyncd.conf
pid file = /var/run/rsyncd.pid #程序 pid 檔案所在位置
port = 873                                 #指定監聽埠,預設是873,可以自己指定
address = 192.168.1.171         #伺服器監聽的IP地址,可省略


uid = root      #守護程序所屬的uid,預設是nobody,可能會碰到檔案或目錄許可權問題,此處偷懶用的 root
gid = root      #守護程序的gid


#chroot,即改變程式執行時所參考的根目錄位置,在傳輸檔案之前,伺服器守護程式在將chroot 到檔案系統中的目錄中
#這樣做的好處是可能保護系統被安裝漏洞侵襲的可能。缺點是需要超級使用者許可權。另外對符號連結檔案,將會排除在外
#也就是說,你在 rsync伺服器上,如果有符號連結,你在備份伺服器上執行客戶端的同步資料時,只會把符號連結名同步下來,並不會同步符號連結的內容
use chroot = yes


read only = no #只讀選擇,只讓客戶端從伺服器上讀取檔案
write only = yes #只寫選擇,只讓客戶端到伺服器上寫入


#允許訪問的IP,可以指定單個IP,也可以指定整個網段,能提高安全性。
#格式是 ip 與 ip 之間、ip 和網段之間、網段和網段之間要用空格隔開;
hosts allow = 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 



max connections = 5 #客戶端最多連線數


#當用戶登入時會看到這個資訊。比如顯示當前時間、公告等
motd file = /etc/rsyncd/rsyncd.motd


log file = /var/log/rsync.log  #rsync 伺服器的日誌;
transfer logging = yes          #記錄傳輸檔案的日誌
log format = %t %a %m %f %b     #日誌格式
syslog facility = local3                   #日誌級別


#通過該選項可以覆蓋客戶指定的IP超時時間。可以確保rsync伺服器不會永遠等待一個崩潰的客戶端。
#超時單位為秒鐘,0表示沒有超時定義,這也是預設值。
#對於匿名rsync伺服器來說,一個理想的數字是600。
timeout = 300 


#模組定義
#主要是定義伺服器哪個目錄要被同步。
#每個模組都要以[name]形式。這個名字就是在 rsync 客戶端看到的名字。
#但是伺服器真正同步的資料是通過 path 指定的。可以依次建立多個模組。
#每個模組要指定認證使用者、密碼檔案,但排除並不是必須的。

[ logs ]                                 #模組名,以下配置都屬於此模組
path = /var/log                    #檔案目錄所在位置
list = no                               #當檢視伺服器上提供了哪些目錄時是否列出來,no比較安全
ignore errors                      #忽略I/O錯誤

#指定由空格或逗號分隔的使用者名稱列表,只有這些使用者才允許連線該模組。
#這裡的使用者和系統使用者沒有任何關係,是 rsyncd.secrets 中的使用者名稱!
#如果"auth users"被設定,那麼客戶端發出對該模組的連線請求
#以後會被rsync請求challenged進行驗證身份。

#這裡使用的 challenge/response 認證協議。
#使用者的名和密碼以明文方式存放在"secrets file"選項指定的檔案中。
#預設情況下無需密碼就可以連線模組(也就是匿名方式)。
auth users = zhangzk
secrets file = /etc/rsyncd/rsyncd.secrets        #密碼檔案


exclude = error_log httpd.pid             #忽略的檔案或目錄
comment this is my log                       #本模組註釋,可選


1.編輯配置rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873


uid = root
gid = root


use chroot = yes
read only = no
#write only = yes


hosts allow = 10.0.7.211
hosts deny  =*


max connections = 5


motd file = /etc/rsyncd/rsyncd.motd


log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3


timeout = 300 


[ logs ]  
path = /root/test/log
list = no
ignore errors


auth users =lalala
secrets file = /etc/rsyncd/rsyncd.secrets


#exclude =
comment this is my log

##定義第二個同步目

[weblog] 
path = /var/www/log
list=yes 
ignore errors 
auth users = apache     ##必須在伺服器上存在的真實的系統使用者,多個使用者以,號隔開
secrets file = /etc/rsyncd/rsyncd.secrets  ##指定上述賬號密碼檔案 
comment = web log
exclude =   data/ data1/   ##排除log下的data目錄和data1目錄
2.編輯密碼檔案 [[email protected] ~]# vi /etc/rsyncd/rsyncd.secrets
apache:123456
注:1、將rsyncd.secrets這個密碼檔案的檔案屬性設為root擁有, 且許可權要設為600, 否則無法備份成功!          
                   出於安全目的,檔案的屬性必需是隻有屬主可讀。
         2、這裡的密碼值得注意,為了安全你不能把系統使用者的密碼寫在這裡。
                比如你的系統使用者easylife密碼是 000000,為了安全你可以讓rsync中的easylife為keer。
                這和samba的使用者認證的密碼原理是差不多的。

3.編輯伺服器資訊檔案

設定rsyncd.motd 檔案;

它是定義rysnc伺服器資訊的,也就是使用者登入資訊。比如讓使用者知道這個伺服器是誰提供的等; 類似ftp伺服器登入時,我們所看到的 linuxsir.org ftp ……。  當然這在全域性定義變數時,並不是必須的,你可以用#號注掉,或刪除; 我在這裡寫了一個 rsyncd.motd的內容為:

  ++++++++++++++++++++++++++++++++++++++++++++++
  Welcome to use the mike.org.cn rsync services!
           2017
  ++++++++++++++++++++++++++++++++++++++++++++++

伺服器端啟動:

usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf /etc/rsyncd/rsyncd.conf 是你剛才編輯的rsyncd.conf的位置.
也可以在/etc/rc.d/rc.local里加入讓系統自動啟動等.
訪問 rsync 伺服器:
當路徑中包含 雙引號::  時,啟功該模式
拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 拉: rsync [OPTION...] rsync://[[email protected]]HOST[:PORT]/SRC... [DEST] rsync -a [email protected]::hadoop /homeback
rsync -a rsync://web/home 

推: rsync [OPTION...] SRC... [USER@]HOST::DEST
推: rsync [OPTION...] SRC... rsync://[[email protected]]HOST[:PORT]/DEST 連線密碼 是在rsyncd.secrets 中設定的
user使用在rsyncd.secrets 中定義的使用者
這裡的 SRC和DEST 是rsync.conf中 指定的模組 客戶端的rsyncd.secrets  檔案中 只存入密碼就可以 請把客戶端和服務端的  rsyncd.secrets 檔案許可權都設定為600 
特殊設定

從遠端伺服器 同步到本地  強制性一致

 # rsync -avzP --delete [email protected]::hadoop /backup
         這回我們引入一個 --delete 選項,表示伺服器上的資料要與客戶端完全一致,

如果 /backup目錄中有伺服器上不存在的檔案,則刪除
        最終目的是讓 
/backup 目錄上的資料完全與伺服器上保持一致;

         用的時候要小心點,最好不要把已經有重要數所據的目錄,當做本地更新目錄,否則會把你的資料全部刪除;

從遠端伺服器 同步到本地  自動指令碼

# rsync -avzP --delete --password-file=/tmp/rsync.password [email protected]::hadoop /backup

          加了一個選項 –password-file=rsync.password ,這時當我們以apache使用者登入rsync伺服器同步資料時,密碼將讀取 /tmp/rsync.password 這個檔案。這個檔案內容只是apache使用者的密碼
# touch /tmp/rsync.password
# chmod 600 /tmp/rsync.password 
# echo "123456"> /tmp/rsync.password 
注: 這樣就不需要密碼了;其實這是比較重要的,因為伺服器通過crond 計劃任務還是有必要的;
rsync 客戶端自動與伺服器同步資料:
編輯crontab # crontab -e 加入如下程式碼:
10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password [email protected]::hadoop  /tmp/hadoop/

相關推薦

rsync 檔案同步命令 SCP命令

 快速查詢scp: scp  各種引數   源地址檔案    目的地址檔案  從本地複製到遠端:        scp   [[[email protected]]host1:]file1

兩臺Linux主機互傳檔案可以使用SCP命令來實現

這兩天剛搬進實驗室,有了臺新的臺式電腦,不喜歡用實驗室電腦編寫程式碼,所以就將電腦裝成了Ubuntu14的,就想辦法將自己之前的虛擬機器中的檔案搬到Linux主機上,但是檔案太多。後來在網上找到一個辦法: 原文出處:http://blog.csdn.net/winniepu

rsync檔案同步使用記錄

這裡記錄一個在工作中需要使用的rsync進行儲存檔案備份的方法。 需求: 在伺服器端進行錄音檔案儲存,不但檔案要儲存到伺服器上,還需定時備份到儲存上。 一. 檔案備份源端配置 1、在 /etc/路徑下建立rsyncd.conf 檔案,檔案內容如下: uid = root gi

Linux 常用命令-scp命令

scp scp是secure copy的簡寫,用於在Linux下進行遠端拷貝檔案的命令。和它類似的命令有cp,但是cp只是在本機進行拷貝不能跨伺服器,而且scp是加密的。可能稍微影響下速度。 命令格式 scp [引數] [原路徑] [目標路徑] -r 遞迴複製整個目錄 從

兄弟連Linux(二十六)--rsync檔案同步

1、rsync伺服器遠端備份、實時備份 1.1 關於RSYNC                         一款快速增量備份工具        Remote Sync,遠端同步        支援本地複製,或者與其他SSH,rsync主機同步     

Linux命令檔案同步、定時備份 -rsync,cron,crontab

一、rsync介紹(可忽略) Rsync(remote synchronize)是一個遠端檔案同步工具; Rsync使用“Rsync演算法”來同步檔案,該演算法只傳送兩個檔案的不同部分,因此速度相當快; Rsync是替代rcp的一個工具,目前由rsync.

Rsync:非常實用的同步文件命令

作文件 sub pin www force 文件的 write 傳輸文件 修改 rsync命令是一個遠程數據同步工具,一般企業用作文件定時同步目錄,代碼發布等功能。1.rsync分為服務端和客戶端,兩端都需要安裝rsync服務。 yum -y install rsync 編

python執行scp命令拷貝檔案及資料夾到遠端主機的目錄

系統環境centos7 python2.7 先在作業系統安裝expect [[email protected] python]# vi 3s.py #!/usr/bin/python #coding:utf-8 import sys,re import os import

Ubuntu ssh登陸方式和scp命令上傳下載檔案

ssh登陸方式: 在本地命令列終端輸入:ssh [email protected] , 其中username為需要登陸的伺服器的使用者名稱,address為伺服器ip,然後根據提示輸入密碼即可。 scp是一個遠端檔案拷貝程式,用於上傳下載檔案非常的方便。 上傳檔案: 在本地命令

rsync 命令scp 命令的替代方案

rsync 命令和 scp 命令一樣,都可以實現在 Linux、Windows 和 Mac 之間的檔案互傳。 scp -r /local/folder/path/ [email protected] 但是有時候 scp 命令不太給力,常常會給出如下圖所示的提示。(我剛剛就

Linux使用scp命令進行檔案遠端拷貝詳解

前言 scp是 secure copy的縮寫, scp是Linux系統下基於ssh登陸進行安全的遠端檔案拷貝命令。Linux的scp命令可以在Linux伺服器之間複製檔案和目錄。 使用語法: scp  [引數] [源路徑] @IP:/目標路徑 scp 引數如下: -1: 強制sc

Linux下使用scp命令進行檔案遠端拷貝

scp是 secure copy的縮寫, scp是Linux系統下基於ssh登陸進行安全的遠端檔案拷貝命令。Linux的scp命令可以在Linux伺服器之間複製檔案和目錄。 使用語法:scp  [引數] [源路徑] @IP:/目標路徑 scp 引數如下: -1: 強制scp命令使用協

使用SSH的scp命令列傳輸檔案到遠端伺服器

使用方式如下: 1、上傳本地檔案到伺服器 scp /path/filename [email protected]:/path/ 例如scp /var/www/test.php [email protected]:/var/www/ 把本機/var/

Linux命令之遠端登入伺服器複製檔案命令--scp

scp scp就是Secure Copy的縮寫,是在Linux下遠端複製檔案的命令 命令格式和ssh基本相同,唯一不同的指定埠是大寫的-P而ssh是小寫的-p 下面用Ubuntu和Red Het兩個

【Linux命令】用 scp 命令在不同主機之間拷貝檔案或目錄

scp 命令 scp 命令 意思是 secure copy 即安全拷貝,可以把它看做是 cp 命令的高階版,可以跨主機拷貝。 經常用來在區域網內不同主機之間分享檔案,或者在本機與遠端主機中分享檔案。 在使用的時候就像使用cp 命令一樣,第一個引數是源,第二個引數的目的。

跨伺服器拷貝檔案SCP命令的使用)

操作前提: ①你已經登入了本地伺服器; ②你知道遠端伺服器IP地址(假定為192.168.0.2); ③你在遠端伺服器有Linux使用者(假設為root) 1. 本地檔案 ------->

Linux伺服器和Windows本地間scp命令上傳下載檔案的使用

scp上傳下載的使用 |-在Linux上安裝ssh | |-安裝SecureCRT,進行遠端連線Linux | |-在Windows上安裝Winsshd使得Windows支援ssh協議,並開啟wins

Linux主機之間傳輸檔案scp命令

Linux scp命令用於Linux之間複製檔案和目錄。 scp是 secure copy的縮寫, scp是linux系統下基於ssh登陸進行安全的遠端檔案拷貝命令。 參見:http://www.runoob.com/linux/linux-comm-scp.html scp是rcp的升級,

五、Jenkins系列_使用scp命令進行遠端檔案複製遇到的坑

一、場景介紹 專案為微服務專案,使用jenkins進行統一部署。基本思路是 1. 在jenkins伺服器上使用git外掛拉取專案程式碼 2. 使用gradle進行打包 3. 將打好的jar包使用scp遠端複製到部署伺服器上 4. 執行遠端shell指令

linux命令 - scp:在本地和遠端之間拷貝檔案

scp命令詳解 - 掃地僧--神龍冠日 - 部落格園http://www.cnblogs.com/likui360/p/6011769.html 開發板linux到虛擬機器linux間的檔案傳輸——scp指令與本地地址的配置 - Leaviathan的部落格 - CSDN部落格https://b