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

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

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

執(zhí)行rsync的任務(wù)的2種方式解析

阿銘linux ? 2018-02-09 08:48 ? 次閱讀

一. 通過ssh的方式

前面介紹的rsync 5種方式當(dāng)中,第二、第三(1個冒號)就屬于通過ssh的方式,這種方式其實就是讓用戶去登錄到遠(yuǎn)程機(jī)器,然后執(zhí)行rsync的任務(wù)。

[root@localhost rsync]# rsync -avL test1/ www@192.168.0.101:/tmp/test2/

www@192.168.0.101's password:

sending incremental file list

created directory /tmp/test2

./

1

1.txt

2

2.txt

3

4

sent 327 bytes received 129 bytes 182.40 bytes/sec

total size is 0 speedup is 0.00

這種方式就是前面介紹的第二種方式了,是通過ssh拷貝的數(shù)據(jù),需要輸入192.168.0.101 那臺機(jī)器www 賬戶的密碼。當(dāng)然也可以使用第三種方式拷貝:

[root@localhost rsync]# rsync -avL www@192.168.0.101:/tmp/test2/ ./test3/

www@192.168.0.101's password:

receiving incremental file list

created directory ./test3

./

1

1.txt

2

2.txt

3

4

sent 128 bytes received 351 bytes 38.32 bytes/sec

total size is 0 speedup is 0.00

以上兩種方式如果寫到腳本里,備份起來就有麻煩了,因為要輸入密碼,腳本本來就是自動的,不可能做到的。但是不代表沒有解決辦法。

那就是通過密鑰驗證,密鑰不設(shè)立密碼就ok了。還記得在前面阿銘曾經(jīng)介紹過通過密鑰登錄遠(yuǎn)程主機(jī)嗎,下面要講的內(nèi)容就是那些東西了。

在操作之前我們先講明主機(jī)信息: 192.168.0.10 (主機(jī)名Aming-1)和 192.168.0.101 (主機(jī)名Aming)需要從Aming-1上拷貝數(shù)據(jù)到Aming上。

首先確認(rèn)一下Aming-1上是否有這個文件 /root/.ssh/id_rsa.pub:

[root@Aming-1 ~]# ssh-keygen

Generating public/private rsa key pair.

阿銘之前生成過密鑰對,所以這個文件已經(jīng)存在了,如果你的Linux不存在這個文件,請按照如下方法生成:

[root@Aming-1 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

3b:74:af:e8:08:ac:99:30:3f:ef:84:7a:a0:a6:3d:89 root@Aming-1

在這個過程中會有一些交互的過程,它首先提示要輸入這個密鑰的密碼,出于安全考慮應(yīng)該定義個密碼,但是我們的目的就是為了自動化同步數(shù)據(jù)。

所以這里不輸入任何密碼,直接按回車,即密碼為空。最后則生成了私鑰(/root/.ssh/id_rsa)和公鑰文件(/root/.ssh/id_rsa.pub)

把公鑰文件的內(nèi)容拷貝到目標(biāo)機(jī)器上:

[root@Aming-1 ~]# cat .ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5SPyJ/kliGTAMUan/GCN325VS8jMxvOn4uQoLU/NqBpCI3MrmvSucv6EAzxx1J2uOssW08el06LG+cUwXmm5mkqDRBV6C9qNnR/bVV5vr3QsUwbKPr7fdyJvruQWWR7cSL+mjP0SYmG2Qy2JcM3hl1IZArzC6yeUnq2Gwbax8LgbZE3XfRfOYdimwyh5Tfft7yLYipWc37k+oRUWkI3mW7PalsOlfQhxrLD/lS891y6RdSbGxMJWPoV0KMFbVh+uJgyAXpeuWl+F+/iuQPzb6w3h4pWI31bvbsE9BU82jSzHYEjpq3SN2MJN2vaLs5a0mVpm9zka/h4ITFB8Uy1iSQ== root@Aming-1

復(fù)制主機(jī)Aming-1的/root/.ssh/id_rsa.pub文件內(nèi)容,并粘貼到主機(jī)Aming的/home/www/.ssh/authorized_keys中:

[root@Aming ~]# vim /home/www/.ssh/authorized_keys

在這一步也許你會遇到/home/www/.ssh目錄不存在的問題,可以手動創(chuàng)建,并修改目錄權(quán)限為700也可以執(zhí)行ssh-keygen命令生成這個目錄。

保存/home/www/.ssh/authorized_keys文件后,再到主機(jī)Aming-1上執(zhí)行:

[root@Aming-1 ~]# ssh www@192.168.0.101

Last login: Wed Jun 12 12:24:34 2013 from 192.168.0.10

[www@Aming ~]$

現(xiàn)在不用輸入密碼也可以登錄主機(jī)Aming了。下面先從Aming主機(jī)退出來,再從主機(jī)Aming-1上執(zhí)行一下rsync命令試試吧。

[root@Aming-1 ~]# rsync -av rsync/test1/ www@192.168.0.101:/tmp/test4/

sending incremental file list

created directory /tmp/test4

./

1

1.txt

2

2.txt

3

4

sent 327 bytes received 129 bytes 912.00 bytes/sec

total size is 0 speedup is 0.00

二. 通過后臺服務(wù)的方式

這種方式可以理解成這樣,在遠(yuǎn)程主機(jī)上建立一個rsync的服務(wù)器,在服務(wù)器上配置好rsync的各種應(yīng)用,然后本機(jī)作為rsync的一個客戶端去連接遠(yuǎn)程的rsync服務(wù)器。下面阿銘就介紹一下,如何去配置一臺rsync服務(wù)器。

建立并配置rsync的配置文件 /etc/rsyncd.conf

[root@Aming-1 ~]# vim /etc/rsyncd.conf

#port=873

log file=/var/log/rsync.log

pid file=/var/run/rsyncd.pid

#address=192.168.0.10

[test]

path=/root/rsync

use chroot=true

max connections=4

read only=no

list=true

uid=root

gid=root

auth users=test

secrets file=/etc/rsyncd.passwd

hosts allow=192.168.0.101

其中配置文件分為兩部分:全部配置部分和模塊配置部分,全局部分就是幾個參數(shù)而已,就像阿銘的rsyncd.conf中port, log file, pid file, address這些都屬于全局配置,而[test]以下部分就是模塊配置部分了。

一個配置文件中可以有多個模塊,模塊名自定義,格式就像阿銘的rsyncd.conf中的這樣。其實模塊中的一些參數(shù)例如use chroot, max connections, udi, gid, auth users, secrets file以及hosts allow都可以配置成全局的參數(shù)。

當(dāng)然阿銘給出的參數(shù)并不是所有的,你可以通過man rsyncd.conf 獲得更多信息。下面就簡單解釋一下這些參數(shù)的意義:

port 指定在哪個端口啟動rsyncd服務(wù),默認(rèn)是873

log file 指定日志文件

pid file 指定pid文件,這個文件的作用涉及到服務(wù)的啟動以及停止等進(jìn)程管理操作

address 指定啟動rsyncd服務(wù)的IP,假如你的機(jī)器有多個IP,就可以指定其中一個啟動rsyncd服務(wù),默認(rèn)是在全部IP上啟動

[test] 指定模塊名,自定義

path 指定數(shù)據(jù)存放的路徑

use chroot true|false 默認(rèn)是true,意思是在傳輸文件以前首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實現(xiàn)額外的安全防護(hù),但是缺點是需要以roots權(quán)限,并且不能備份指向外部的符號連接所指向的目錄文件。

默認(rèn)情況下chroot值為true,如果你的數(shù)據(jù)當(dāng)中有軟連接文件的話建議設(shè)置成false。

max connections 指定最大的連接數(shù),默認(rèn)是0即沒有限制

read only ture|false 如果為true則不能上傳到該模塊指定的路徑下

list 指定當(dāng)用戶查詢該服務(wù)器上的可用模塊時,該模塊是否被列出,設(shè)定為true則列出,false則隱藏

uid/gid 指定傳輸文件時,以哪個用戶/組的身份傳輸

auth users 指定傳輸時要使用的用戶名

secrets file 指定密碼文件,該參數(shù)連同上面的參數(shù)如果不指定則不使用密碼驗證,注意該密碼文件的權(quán)限一定要是600

hosts allow 指定被允許連接該模塊的主機(jī),可以是IP或者網(wǎng)段,如果是多個,之間用空格隔開

編輯secrets file,保存后要賦予600權(quán)限,如果權(quán)限不對,不能完成同步

[root@Aming-1 ~]# cat /etc/rsyncd.passwd

test:test123

[root@Aming-1 ~]# chmod 600 /etc/rsyncd.passwd

啟動rsyncd服務(wù)

[root@Aming-1 ~]# rsync --daemon --config=/etc/rsyncd.conf

啟動后,可以查看一下日志,并查看端口是否啟動:

[root@Aming-1 ~]# cat /var/log/rsync.log

[root@Aming-1 ~]# netstat -lnp |grep 873

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 12066/rsync

tcp 0 0 :::873 :::* LISTEN 12066/rsync

如果想開機(jī)啟動,請把 rsync --daemon --confg=/etc/rsyncd.conf 寫入到/etc/rc.d/rc.local文件。

到另一臺機(jī)器上測試

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test5/

Password:

receiving incremental file list

created directory /tmp/test5

./

1

1.txt

2

2.txt

3

4

sent 143 bytes received 354 bytes 994.00 bytes/sec

total size is 0 speedup is 0.00

阿銘剛剛提到有一個選項叫做 “use chroot” 默認(rèn)為true,如果是true,同步的文件中如果有軟連接,則會有問題,首先在主機(jī)Aming-1的/root/rsync/test1/ 目錄下創(chuàng)建一個軟連接文件:

[root@Aming-1 ~]# ln -s /root/test.txt rsync/test1/test.txt

[root@Aming-1 ~]# ls -l rsync/test1/test.txt

lrwxrwxrwx 1 root root 14 6月 12 13:24 rsync/test1/test.txt -> /root/test.txt

然后再到主機(jī)Aming上,同步:

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test6/

Password:

receiving incremental file list

symlink has no referent: "/test1/test.txt" (in test)

created directory /tmp/test6

./

1

1.txt

2

2.txt

3

4

sent 143 bytes received 419 bytes 1124.00 bytes/sec

total size is 0 speedup is 0.00

rsync error: some files/attrs were not transferred (see previous errors) (code

23) at main.c(1532) [generator=3.0.6]

可以看到,如果設(shè)置 “use chroot” 為true則同步軟連接文件會有問題,下面阿銘把主機(jī)Aming-1的rsync配置文件修改一下,把true改為false:

[root@Aming-1 ~]# sed -i 's/use chroot=true/use chroot=false/' /etc/rsyncd.conf

[root@Aming-1 ~]# grep 'use chroot' /etc/rsyncd.conf

use chroot=false

然后再到主機(jī)Aming上再次執(zhí)行同步:

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test7/

Password:

receiving incremental file list

created directory /tmp/test7

./

1

1.txt

2

2.txt

3

4

test.txt

sent 162 bytes received 410 bytes 1144.00 bytes/sec

total size is 0 speedup is 0.00

這樣就沒有任何問題啦,你也許會奇怪,為什么阿銘修改完rsyncd.conf配置文件后,沒有重啟rsyncd服務(wù)呢?其實這是rsync的一個特定機(jī)制,配置文件時即時生效的,不用重啟服務(wù)。

上面的例子中,阿銘都有輸入密碼,這樣同樣也不能寫入腳本中自動執(zhí)行,其實這種方式也是可以不用手動輸入密碼的,它有兩種實現(xiàn)方式。

第一種,指定密碼文件

在客戶端上,也就是主機(jī)Aming上,編輯一個密碼文件:

[root@Aming ~]# vim /etc/pass

加入test用戶的密碼:

[root@Aming ~]# cat /etc/pass

test123

修改密碼文件的權(quán)限:

[root@Aming ~]# chmod 600 /etc/pass

在同步的時候,指定一下密碼文件,就可以省去輸入密碼的步驟了:

[root@Aming ~]# rsync -avL test@192.168.0.10::test/test1/ /tmp/test8/ --password-file=/etc/pass

receiving incremental file list

created directory /tmp/test8

./

1

1.txt

2

2.txt

3

4

test.txt

sent 190 bytes received 451 bytes 1282.00 bytes/sec

total size is 0 speedup is 0.00

第二種:在rsync服務(wù)器端不指定用戶

在服務(wù)端也就是主機(jī)Aming-1上修改配置文件rsyncd.conf, 去掉關(guān)于認(rèn)證賬戶的配置項(auth user 和 secrets file這兩行):

sed -i 's/auth users/#auth users/;s/secrets file/#secrets file/' /etc/rsyncd.conf

上面的這個命令是把 “auth users” 和 “secrets file” 兩行的最前面加一個 “#”, 這樣就把這兩行注釋掉,使其失去意義。

在前面阿銘未曾講過sed的這種用法,其實也不難弄明白,只是用分號把兩個替換的子命令塊給替換了而已。然后我們再到客戶端主機(jī)Aming上測試:

[root@Aming ~]# rsync -avL 192.168.0.10::test/test1/ /tmp/test9/

receiving incremental file list

created directory /tmp/test9

./

1

1.txt

2

2.txt

3

4

test.txt

sent 162 bytes received 410 bytes 1144.00 bytes/sec

total size is 0 speedup is 0.00

注意,這里不用再加test這個用戶了,默認(rèn)是以root的身份拷貝的,現(xiàn)在已經(jīng)不需要輸入密碼了。

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

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207894
  • SSH
    SSH
    +關(guān)注

    關(guān)注

    0

    文章

    178

    瀏覽量

    16226

原文標(biāo)題:rsync應(yīng)用實例

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    UCOS任務(wù)執(zhí)行順序如何保證

    比如我要把溫濕度數(shù)據(jù)顯示在液晶上?兩個任務(wù)任務(wù)1溫濕度測量,任務(wù)2數(shù)據(jù)顯示,如何保證任務(wù)1先執(zhí)行任務(wù)
    發(fā)表于 04-01 06:36

    rsync命令使用

    rsync 同步文件
    發(fā)表于 06-05 10:11

    NAS存儲中如何進(jìn)行遠(yuǎn)程數(shù)據(jù)備份?

    ,點擊完成; 10.任務(wù)創(chuàng)建完成,Rsync備份將按照你的設(shè)置自動執(zhí)行; 11.可前往Rsync服務(wù)器查看執(zhí)行結(jié)果。
    發(fā)表于 11-08 17:42

    UCOSIII多任務(wù)執(zhí)行,只執(zhí)行一個任務(wù)而且執(zhí)行的有點問題怎么解決?

    (buftemp,&Display_Size_max)) { }多任務(wù)執(zhí)行,而且只執(zhí)行了這個問題,關(guān)鍵也沒有給他p_usart3_receive 這個信號量2、比如找到一個其他
    發(fā)表于 05-12 00:27

    Dispatch Queue任務(wù)執(zhí)行與Dispatch Source

    Queues實踐解析后,作者付宇軒(@DevTalking)著重分享了讓Dispatch Queue執(zhí)行任務(wù)的那些事兒。當(dāng)然,本著Talk is cheap, show me the code原則,除卻講解外
    發(fā)表于 10-11 11:54 ?0次下載

    stm32的任務(wù)調(diào)度方式和步驟

    ? STM32的任務(wù)調(diào)度可以有兩方式 1)通過systick_handler定時器調(diào)度 ? 2執(zhí)行一個系統(tǒng)調(diào)用 ? cortexM3的寄
    的頭像 發(fā)表于 08-10 23:29 ?4582次閱讀

    Python定時任務(wù)的實現(xiàn)方式

    在日常工作中,我們常常會用到需要周期性執(zhí)行任務(wù),一方式是采用 Linux 系統(tǒng)自帶的 crond 結(jié)合命令行實現(xiàn)。另外一
    的頭像 發(fā)表于 10-08 15:20 ?5487次閱讀

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

    同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當(dāng)快;Rsync支持大多數(shù)的類Unix系統(tǒng),無論是Linux、Solaris還是BSD上都經(jīng)過了良好的測試;此外,它在windows平臺下也有相應(yīng)的版本,如cwRsync和Sync2NAS等工具
    的頭像 發(fā)表于 09-16 09:13 ?1009次閱讀

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

    同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當(dāng)快; Rsync支持大多數(shù)的類Unix系統(tǒng),無論是Linux、Solaris還是BSD上都經(jīng)過了良好的測試; 此外,它在windows平臺下也有相應(yīng)的版本,如cwRsync和Sync2NAS等工具
    的頭像 發(fā)表于 09-23 10:32 ?964次閱讀

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

    Rsync(remote synchronize)是一個遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機(jī)間的文件。Rsync使用所謂的“Rsync算法”來使本地和遠(yuǎn) 程兩個主機(jī)之間的文件達(dá)到同步,這個算法只傳送兩個文件的不
    的頭像 發(fā)表于 10-12 09:12 ?833次閱讀

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

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

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

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

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

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

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

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

    shell腳本執(zhí)行的三方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一非常實用的工具,用于自動化執(zhí)行一系列命令。Shell腳本可以大大提高工作效率,簡化復(fù)雜的任務(wù)。在這篇文章中,我們將介紹Shell腳本執(zhí)行的三
    的頭像 發(fā)表于 08-30 15:24 ?236次閱讀