rsync 檔案同步命令 SCP命令
從本地複製到遠端:
scp [[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2 本地使用者名稱、地址、檔案 遠端使用者名稱、地址、檔案 host可以用ip,也可以用域名(dns可以解析) 可以省略本地資訊: scp file1 ... [[[email protected]]host2:]file2
也可以省略本地資訊和遠端使用者資訊:
其中: 在指定複製源SRC時,路徑是否有最後的 “/” 有不同的含義,例如:
/home : 表示將整個 /home 目錄複製到目標目錄
/home/ : 表示將 /home 目錄中的所有內容複製到目標目錄
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 目錄中的所有內容複製到目標目錄
二.通過遠端 Shell 使用:
- 當路徑中包含 單引號: 時,啟功該模式
- 遠端 Shell 方式(建議使用 ssh,使用者驗證由 ssh 負責) 不用建立rsync伺服器、守護程序
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工具 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 檔案;
++++++++++++++++++++++++++++++++++++++++++++++
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