RSync實現文件備份同步

来源:http://www.cnblogs.com/zhenghongxin/archive/2016/05/27/5533680.html
-Advertisement-
Play Games

最近用到了rsync的非同步非同備份,一個簡單的rsync同步配置,總結起來有以下幾個步驟: 1)服務端配置:vim /etc/rsyncd.conf 進入編輯,加入如下配置: 2) 創建所需要備份的目錄,添加上面配置的虛擬用戶:useradd wlpt -s /sbin/nologin. 3) 修改 ...


最近用到了rsync的非同步非同備份,一個簡單的rsync同步配置,總結起來有以下幾個步驟:

1)服務端配置:vim /etc/rsyncd.conf 進入編輯,加入如下配置:

uid = wlpt # 用戶組

gid = wlpt # 用戶組

use chroot = no

max connections = 400 # 最大連接數

timeout = 300   # 超時時間

pid file = /var/run/rsyncd.pid # 進程號,每個進程都要有pid,鎖定進程信息

lock file = /var/run/rsync.lock # 鎖定lock

og file = /var/log/rsyncd.log #錯誤日誌

path = /wlptshare/

ignore errors

read only = false

list = false

hosts allow = 指定允許ip

auth users = rsync_wlpt #身份認證

secrets file = /etc/wlpt.password #密碼文件存放位置

2) 創建所需要備份的目錄,添加上面配置的虛擬用戶:useradd wlpt -s /sbin/nologin.

3) 修改目錄所屬用戶組,chown -R wlpt.wlpt /wlptshare

4) 編輯密碼文件:echo "rsync_wlpt:rsync_wlpt" > /etc/rsync_wlpt.password

5)修改密碼文件為wlpt所有,chmod 600 rsync_wlpt.password

6)啟動rsyncrsync --daemon 併進行埠的檢查:netstat -lntup|grep 873

7)客戶端配置,將密碼寫入密碼文件:echo "wlpt" > /etc/rsync.password

8)實現需要密碼的拉取數據:rsync -avz rsync_wlpt@IP地址::wlptshare /wlptshare

9) 實現不需要密碼的拉取數據:rsync -avz rsync_wlpt@IP地址::wlptshare /wlptshare --password-file=/etc/rsync.password

10) 推數據則與拉取數據相反--------------------------------------------------------------------------------------------------------------

同時也翻看了其他資料,分享如下:

[rsync實現網站的備份,文件的同步,不同系統的文件的同步,如果是windows的話,需要windows版本cwrsync]

一、什麼是rsync

  rsync,remote synchronize顧名思意就知道它是一款實現遠程同步功能的軟體,它在同步文件的同時,可以保持原來文件的許可權、時間、軟硬鏈接等附加信息。 rsync是用 “rsync 演算法”提供了一個客戶機和遠程文件伺服器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件,這樣其保密性也非常好,另外它還是免費的軟體。

  rsync 包括如下的一些特性:

  能更新整個目錄和樹和文件系統;
  有選擇性的保持符號鏈鏈、硬鏈接、文件屬於、許可權、設備以及時間等;
  對於安裝來說,無任何特殊許可權要求;
  對於多個文件來說,內部流水線減少文件等待的延時;
  能用rsh、ssh 或直接埠做為傳輸入埠;
  支持匿名rsync 同步文件,是理想的鏡像工具;

二、架設rsync伺服器

  架設rsync 伺服器比較簡單,寫一個配置文件rsyncd.conf 。文件的書寫也是有規則的,我們可以參照rsync.samba.org 上的文檔來做。當然我們首先要安裝好rsync這個軟體才行;

A、rsync的安裝;

  獲取rsync

  rysnc的官方網站:http://rsync.samba.org/可以從上面得到最新的版本。目前最新版是3.05。當然,因為rsync是一款如此有用的軟體,所以很多Linux的發行版本都將它收錄在內了。

  軟體包安裝

  # sudo apt-get  install  rsync  註:在debian、ubuntu 等線上安裝方法;
  # yum install rsync    註:Fedora、Redhat 等線上安裝方法;
  # rpm -ivh rsync       註:Fedora、Redhat 等rpm包安裝方法;

  其它Linux發行版,請用相應的軟體包管理方法來安裝。

  源碼包安裝

  tar xvf  rsync-xxx.tar.gz
  cd rsync-xxx
  ./configure --prefix=/usr  ;make ;make install   註:在用源碼包編譯安裝之前,您得安裝gcc等編譯開具才行;
    
B、配置文件

  rsync的主要有以下三個配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文件)、rsyncd.motd(rysnc伺服器信息)

  伺服器配置文件(/etc/rsyncd.conf),該文件預設不存在,請創建它。

  具體步驟如下:

  #touch /etc/rsyncd.conf  #創建rsyncd.conf,這是rsync伺服器的配置文件。
  #touch /etc/rsyncd.secrets  #創建rsyncd.secrets ,這是用戶密碼文件。
  #chmod 600 /etc/rsyncd/rsyncd.secrets  #將rsyncd.secrets這個密碼文件的文件屬性設為root擁有, 且許可權要設為600, 否則無法備份成功!
  #touch /etc/rsyncd.motd

  下一就是我們修改rsyncd.conf和rsyncd.secrets和rsyncd.motd文件的時候了。

  設定/etc/rsyncd.conf

  rsyncd.conf是rsync伺服器主要配置文件。我們先來個簡單的示例,後面在詳細說明各項作用。

  比如我們要備份伺服器上的/home和/opt,在/home中我想把easylife和samba目錄排除在外;

  # Distributed under the terms of the GNU General Public License v2
  # Minimal configuration file for rsync daemon
  # See rsync(1) and rsyncd.conf(5) man pages for help

  # This line is required by the /etc/init.d/rsyncd script
  pid file = /var/run/rsyncd.pid  
  port = 873
  address = 192.168.1.171 
  #uid = nobody
  #gid = nobody   
  uid = root  
  gid = root  

  use chroot = yes 
  read only = yes 

  #limit access to private LANs
  hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 
  hosts deny=*

  max connections = 5
  motd file = /etc/rsyncd.motd

  #This will give you a separate log file
  #log file = /var/log/rsync.log

  #This will log every file transferred - up to 85,000+ per user, per sync
  #transfer logging = yes

  log format = %t %a %m %f %b
  syslog facility = local3
  timeout = 300

  [rhel4home]  
  path = /home   
  list=yes
  ignore errors
  auth users = root
  secrets file = /etc/rsyncd.secrets 
  comment = This is RHEL 4 data 
  exclude = easylife/  samba/     

  [rhel4opt]
  path = /opt
  list=no
  ignore errors
  comment = This is RHEL 4 opt
  auth users = easylife
  secrets file = /etc/rsyncd/rsyncd.secrets

  註:關於auth users是必須在伺服器上存在的真實的系統用戶,如果你想用多個用戶以,號隔開,比如auth users = easylife,root

  設定密碼文件

  密碼文件格式很簡單,rsyncd.secrets的內容格式為:

  用戶名:密碼

  我們在例子中rsyncd.secrets的內容如下類似的;在文檔中說,有些系統不支持長密碼,自己嘗試著設置一下吧。

  easylife:keer
  root:mike

  chown root.root rsyncd.secrets  #修改屬主
  chmod 600 rsyncd.secrets     #修改許可權

  註:1、將rsyncd.secrets這個密碼文件的文件屬性設為root擁有, 且許可權要設為600, 否則無法備份成功!            出於安全目的,文件的屬性必需是只有屬主可讀。
    2、這裡的密碼值得註意,為了安全你不能把系統用戶的密碼寫在這裡。比如你的系統用戶easylife密碼是000000,為了安全你可以讓rsync中的easylife為keer。這和samba的用戶認證的密碼原理是差不多的。

  設定rsyncd.motd 文件;

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

  ++++++++++++++++++++++++++++++++++++++++++++++
  Welcome to use the mike.org.cn rsync services!
           2002------2009
  ++++++++++++++++++++++++++++++++++++++++++++++

三、rsyncd.conf伺服器的配置詳解

A、全局定義

  在rsync 伺服器中,全局定義有幾個比較關健的,根據我們前面所給的配置文件 rsyncd.conf 文件;

  pid file = /var/run/rsyncd.pid   註:告訴進程寫到 /var/run/rsyncd.pid 文件中;
  port = 873  註:指定運行埠,預設是873,您可以自己指定;
  address = 192.168.1.171  註:指定伺服器IP地址
  uid = nobody  
  gid = nobdoy  

   註:伺服器端傳輸文件時,要發哪個用戶和用戶組來執行,預設是nobody。 如果用nobody 用戶和用戶組,可能遇到許可權問題,有些文件從伺服器上拉不下來。所以我就偷懶,為了方便,用了root 。不過您可以在定義要同步的目錄時定義的模塊中指定用戶來解決許可權的問題。

  use chroot = yes 

   註:用chroot,在傳輸文件之前,伺服器守護程式在將chroot 到文件系統中的目錄中,這樣做的好處是可能保護系統被安裝漏洞侵襲的可能。缺點是需要超級用戶許可權。另外對符號鏈接文件,將會排除在外。也就是說,你在 rsync伺服器上,如果有符號鏈接,你在備份伺服器上運行客戶端的同步數據時,只會把符號鏈接名同步下來,並不會同步符號鏈接的內容;這個需要自己來嘗 試

  read only = yes 

  註:read only 是只讀選擇,也就是說,不讓客戶端上傳文件到伺服器上。還有一個 write only選項,自己嘗試是做什麼用的吧;

  #limit access to private LANs
  hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 

  註:在您可以指定單個IP,也可以指定整個網段,能提高安全性。格式是ip 與ip 之間、ip和網段之間、網段和網段之間要用空格隔開;

  max connections = 5   

  註:客戶端最多連接數

  motd file = /etc/rsyncd/rsyncd.motd

  註:motd file 是定義伺服器信息的,要自己寫 rsyncd.motd 文件內容。當用戶登錄時會看到這個信息。比如我寫的是:

  ++++++++++++++++++++++++++++++++++++++++++++++
  Welcome to use the mike.org.cn rsync services!
           2002------2009
  ++++++++++++++++++++++++++++++++++++++++++++++

  log file = /var/log/rsync.log

  註:rsync 伺服器的日誌;

  transfer logging = yes

  註:這是傳輸文件的日誌

  log format = %t %a %m %f %b
  syslog facility = local3
  timeout = 300

B、模塊定義

   模塊定義什麼呢?主要是定義伺服器哪個目錄要被同步。每個模塊都要以[name]形式。這個名字就是在rsync 客戶端看到的名字,其實有點象Samba伺服器提供的共用名。而伺服器真正同步的數據是通過path 指定的。我們可以根據自己的需要,來指定多個模塊。每個模塊要指定認證用戶,密碼文件、但排除並不是必須的

  下麵是前面配置文件模塊的例子:

  [rhel4home]  #模塊它為我們提供了一個鏈接的名字,在本模塊中鏈接到了/home目錄;要用[name] 形式

  path = /home    #指定文件目錄所在位置,這是必須指定的
  auth users = root   #認證用戶是root  ,是必須在伺服器上存在的用戶
  list=yes   #list 意思是把rsync 伺服器上提供同步數據的目錄在伺服器上模塊是否顯示列出來。預設是yes 。如果你不想列出來,就no ;如果是no是比較安全的,至少別人不知道你的伺服器上提供了哪些目錄。你自己知道就行了;
  ignore errors  #忽略IO錯誤
  secrets file = /etc/rsyncd.secrets   #密碼存在哪個文件
  comment = linuxsir home  data  #註釋可以自己定義
  exclude = beinan/ samba/     

  註:exclude是排除的意思,也就是說,要把/home目錄下的easylife和samba排除在外; easylife/和samba/目錄之間有空格分開

  [rhel4opt] 
  path = /opt
  list=no
  comment = optdir  
  auth users = beinan 
  secrets file = /etc/rsyncd/rsyncd.secrets
  ignore errors

四、啟動rsync伺服器及防火牆的設置

  啟動rsync伺服器相當簡單,有以下幾種方法

  A、--daemon參數方式,是讓rsync以伺服器模式運行

  #/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf  #--config用於指定rsyncd.conf的位置,如果在/etc下可以不寫

  B、xinetd方式

  修改services加入如下內容
  # nano -w /etc/services

  rsync  873/tcp  # rsync
  rsync  873/udp  # rsync

  這一步一般可以不做,通常都有這兩行(我的RHEL4和GENTOO預設都有)。修改的目的是讓系統知道873埠對應的服務名為rsync。如沒有的話就自行加入。

  設定 /etc/xinetd.d/rsync, 簡單例子如下:

  # default: off
  # description: The rsync server is a good addition to am ftp server, as it \
  #       allows crc checksumming etc.
  service rsync
  {
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
  }

  上述, 主要是要打開rsync這個daemon, 一旦有rsync client要連接時, xinetd會把它轉介給 rsyncd(port 873)。然後service xinetd restart, 使上述設定生效.

  rsync伺服器和防火牆

  Linux 防火牆是用iptables,所以我們至少在伺服器端要讓你所定義的rsync 伺服器埠通過,客戶端上也應該讓通過。

  #iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
  #iptables -L  查看一下防火牆是不是打開了 873埠

  如果你不太懂防火牆的配置,可以先service iptables stop 將防火牆關掉。當然在生產環境這是很危險的,做實驗才可以這麼做喲!

五、通過rsync客戶端來同步數據

A、語法詳解
 
  在配置完rsync伺服器後,就可以從客戶端發出rsync命令來實現各種同步的操作。rsync有很多功能選項,下麵就對介紹一下常用的選項:

  rsync的命令格式可以為:
  
  1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
  2. rsync [OPTION]... [USER@]HOST:SRC DEST
  3. rsync [OPTION]... SRC [SRC]... DEST
  4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
  5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
  6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

  rsync有六種不同的工作模式:

  1. 拷貝本地文件;當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啟動這種工作模式。
  2.使用一個遠程shell程式(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啟動該模式。
  3.使用一個遠程shell程式(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啟動該模式。
  4. 從遠程rsync伺服器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。
  5. 從本地機器拷貝文件到遠程rsync伺服器中。當DST路徑信息包含"::"分隔符時啟動該模式。
  6. 列遠程機的文件列表。這類似於rsync傳輸,不過只要在命令中省略掉本地機信息即可。
  -a 以archive模式操作、複製目錄、符號連接 相當於-rlptgoD

  rsync中的參數

  -r 是遞歸
  -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有許可權;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當於塊設備文件;
  -z 傳輸時壓縮;
  -P 傳輸進度;
  -v 傳輸時的進度等信息,和-P有點關係,自己試試。可以看文檔;
  -e ssh的參數建立起加密的連接。
  -u只進行更新,防止本地新文件被重寫,註意兩者機器的時鐘的同時
  --progress是指顯示出詳細的進度情況
  --delete是指如果伺服器端刪除了這一文件,那麼客戶端也相應把文件刪除,保持真正的一致
  --password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需互動式地輸入驗證密碼了,這裡需要註意的是這份密碼文件許可權屬性要設得只有屬主可讀。

B、一些實例

  B1、列出rsync 伺服器上的所提供的同步內容;

  首先:我們看看rsync伺服器上提供了哪些可用的數據源

  # rsync  --list-only  [email protected]::
  ++++++++++++++++++++++++++++++++++++++++++++++
  Welcome to use the mike.org.cn rsync services!
             2002------2009
  ++++++++++++++++++++++++++++++++++++++++++++++

  rhel4home       This is RHEL 4 data

   註:前面是rsync所提供的數據源,也就是我們在rsyncd.conf中所寫的[rhel4home]模塊。而“This is RHEL 4 data”是由[rhel4home]模塊中的 comment = This is RHEL 4 data 提供的;為什麼沒有把rhel4opt數據源列出來呢?因為我們在[rhel4opt]中已經把list=no了。

  $ rsync  --list-only  [email protected]::::rhel4home 

  ++++++++++++++++++++++++++++++++++++++++++++++
  Welcome to use the mike.org.cn rsync services!
             2002------2009
  ++++++++++++++++++++++++++++++++++++++++++++++

  Password:
  drwxr-xr-x        4096 2009/03/15 21:33:13 .
  -rw-r--r--        1018 2009/03/02 02:33:41 ks.cfg
  -rwxr-xr-x       21288 2009/03/15 21:33:13 wgetpaste
  drwxrwxr-x        4096 2008/10/28 21:04:05 cvsroot
  drwx------        4096 2008/11/30 16:30:58 easylife
  drwsr-sr-x        4096 2008/09/20 22:18:05 giddir
  drwx------        4096 2008/09/29 14:18:46 quser1
  drwx------        4096 2008/09/27 14:38:12 quser2
  drwx------        4096 2008/11/14 06:10:19 test
  drwx------        4096 2008/09/22 16:50:37 vbird1
  drwx------        4096 2008/09/19 15:28:45 vbird2

後面的root@ip中,root是指定密碼文件中的用戶名,之後的::rhel4home這是rhel4home模塊名

  B2、rsync客戶端同步數據;

  #rsync -avzP [email protected]::rhel4home rhel4home
  Password: 這裡要輸入root的密碼,是伺服器端rsyncd.secrets提供的。在前面的例子中我們用的是mike,輸入的密碼並不回顯,輸好就回車。

   註: 這個命令的意思就是說,用root用戶登錄到伺服器上,把rhel4home數據,同步到本地當前目錄rhel4home上。當然本地的目錄是可以你自己 定義的。如果當你在客戶端上當前操作的目錄下沒有rhel4home這個目錄時,系統會自動為你創建一個;當存在rhel4home這個目錄中,你要註意 它的寫許可權。

  #rsync -avzP  --delete [email protected]::rhel4home   rhel4home

   這回我們引入一個--delete 選項,表示客戶端上的數據要與伺服器端完全一致,如果 linuxsirhome目錄中有伺服器上不存在的文件,則刪除。最終目的是讓linuxsirhome目錄上的數據完全與伺服器上保持一致;用的時候要 小心點,最好不要把已經有重要數所據的目錄,當做本地更新目錄,否則會把你的數據全部刪除;

  設定 rsync client

  設定密碼文件

  #rsync -avzP  --delete  --password-file=rsyncd.secrets   [email protected]::rhel4home rhel4home

  這次我們加了一個選項 --password-file=rsyncd.secrets,這是當我們以root用戶登錄rsync伺服器同步數據時,密碼將讀取rsyncd.secrets這個文件。這個文件內容只是root用戶的密碼。我們要如下做;

  # touch rsyncd.secrets
  # chmod 600 rsyncd.secrets
  # echo "mike"> rsyncd.secrets

  # rsync -avzP  --delete  --password-file=rsyncd.secrets   [email protected]::rhel4home rhel4home

  註:這裡需要註意的是這份密碼文件許可權屬性要設得只有屬主可讀。

    這樣就不需要密碼了;其實這是比較重要的,因為伺服器通過crond 計劃任務還是有必要的;

  B3、讓rsync客戶端自動與伺服器同步數據

   伺服器是重量級應用,所以數據的網路備份還是極為重要的。我們可以在生產型伺服器上配置好rsync 伺服器。我們可以把一臺裝有rysnc機器當做是備份伺服器。讓這台備份伺服器,每天在早上4點開始同步伺服器上的數據;並且每個備份都是完整備份。有時 硬碟壞掉,或者伺服器數據被刪除,完整備份還是相當重要的。這種備份相當於每天為伺服器的數據做一個鏡像,當生產型伺服器發生事故時,我們可以輕鬆恢複數 據,能把數據損失降到最低;是不是這麼回事??

  step1:創建同步腳本和密碼文件
  
  #mkdir   /etc/cron.daily.rsync
  #cd  /etc/cron.daily.rsync
  #touch rhel4home.sh  rhel4opt.sh
  #chmod 755 /etc/cron.daily.rsync/*.sh 
  #mkdir /etc/rsyncd/
  #touch /etc/rsyncd/rsyncrhel4root.secrets
  #touch /etc/rsyncd/rsyncrhel4easylife.secrets
  #chmod 600  /etc/rsyncd/rsync.*

   註: 我們在 /etc/cron.daily/中創建了兩個文件rhel4home.sh和rhel4opt.sh ,並且是許可權是755的。創建了兩個密碼文件root用戶用的是rsyncrhel4root.secrets ,easylife用戶用的是 rsyncrhel4easylife.secrets,許可權是600;

  我們編輯rhel4home.sh,內容是如下的:

  #!/bin/sh
  #backup 192.168.145.5:/home
  /usr/bin/rsync   -avzP  --password-file=/etc/rsyncd/rsyncrhel4root.password   [email protected]::rhel4home   /home/rhel4homebak/$(date +'%m-%d-%y')

  我們編輯 rhel4opt.sh ,內容是:

  #!/bin/sh
  #backup 192.168.145.5:/opt
  /usr/bin/rsync   -avzP  --password-file=/etc/rsyncd/rsyncrhel4easylife.secrets    [email protected]::rhel4opt   /home/rhel4hoptbak/$(date +'%m-%d-%y')

  註:你可以把rhel4home.sh和rhel4opt.sh的內容合併到一個文件中,比如都寫到rhel4bak.sh中;

  接著我們修改 /etc/rsyncd/rsyncrhel4root.secrets和rsyncrhel4easylife.secrets的內容;

  # echo "mike" > /etc/rsyncd/rsyncrhel4root.secrets
  # echo "keer"> /etc/rsyncd/rsyncrhel4easylife.secrets

   然後我們再/home目錄下創建rhel4homebak 和rhel4optbak兩個目錄,意思是伺服器端的rhel4home數據同步到備份伺服器上的/home/rhel4homebak 下,rhel4opt數據同步到 /home/rhel4optbak/目錄下。並按年月日歸檔創建目錄;每天備份都存檔;

  #mkdir /home/rhel4homebak
  #mkdir /home/rhel4optbak

  step2:修改crond伺服器的配置文件 加入到計劃任務

  #crontab  -e

  加入下麵的內容:

  # Run daily cron jobs at 4:10 every day  backup rhel4 data: 
  10 4 * * * /usr/bin/run-parts   /etc/cron.daily.rsync   1> /dev/null

  註:第一行是註釋,是說明內容,這樣能自己記住。
    第二行表示在每天早上4點10分的時候,運行 /etc/cron.daily.rsync 下的可執行腳本任務;
    
  配置好後,要重啟crond 伺服器;

  # killall crond    註:殺死crond 伺服器的進程;
  # ps aux |grep crond  註:查看一下是否被殺死;
  # /usr/sbin/crond    註:啟動 crond 伺服器;
  # ps aux  |grep crond  註:查看一下是否啟動了?
  root      3815  0.0  0.0   1860   664 ?        S    14:44   0:00 /usr/sbin/crond
  root      3819  0.0  0.0   2188   808 pts/1    S+   14:45   0:00 grep crond

六、FAQ

  Q:如何通過ssh進行rsync,而且無須輸入密碼?

  A:可以通過以下幾個步驟

  1. 通過ssh-keygen在server A上建立SSH keys,不要指定密碼,你會在~/.ssh下看到identity和identity.pub文件
  2. 在server B上的home目錄建立子目錄.ssh
  3. 將A的identity.pub拷貝到server B上
  4. 將identity.pub加到~[user b]/.ssh/authorized_keys
  5. 於是server A上的A用戶,可通過下麵命令以用戶B ssh到server B上了。e.g. ssh -l userB serverB。這樣就使server A上的用戶A就可以ssh以用戶B的身份無需密碼登陸到server B上了。

  Q:如何通過在不危害安全的情況下通過防火牆使用rsync?
  
  A:解答如下:

   這通常有兩種情況,一種是伺服器在防火牆內,一種是伺服器在防火牆外。無論哪種情況,通常還是使用ssh,這時最好新建一個備份用戶,並且配置sshd 僅允許這個用戶通過RSA認證方式進入。如果伺服器在防火牆內,則最好限定客戶端的IP地址,拒絕其它所有連接。如果客戶機在防火牆內,則可以簡單允許防 火牆打開TCP埠22的ssh外發連接就ok了。

  Q:我能將更改過或者刪除的文件也備份上來嗎?

  A:當然可 以。你可以使用如:rsync -other -options -backupdir = ./backup-2000-2-13  ...這樣的命令來實現。這樣如果源文件:/path/to/some/file.c改變了,那麼舊的文件就會被移到./backup- 2000-2-13/path/to/some/file.c,這裡這個目錄需要自己手工建立起來

  Q:我需要在防火牆上開放哪些埠以適應rsync?
 
  A:視情況而定。rsync可以直接通過873埠的tcp連接傳文件,也可以通過22埠的ssh來進行文件傳遞,但你也可以通過下列命令改變它的埠:
  
  rsync --port 8730 otherhost::
  或者
  rsync -e 'ssh -p 2002' otherhost:

  Q:我如何通過rsync只複製目錄結構,忽略掉文件呢?
  
  A:rsync -av --include '*/' --exclude '*' source-dir dest-dir

  Q:為什麼我總會出現"Read-only file system"的錯誤呢?

  A:看看是否忘了設"read only = no"了

  Q:為什麼我會出現'@ERROR: invalid gid'的錯誤呢?

  A:rsync使用時預設是用uid=nobody;gid=nobody來運行的,如果你的系統不存在nobody組的話,就會出現這樣的錯誤,可以試試gid = ogroup或者其它

  Q:綁定埠873失敗是怎麼回事?
  A:如果你不是以root許可權運行這一守護進程的話,因為1024埠以下是特權埠,會出現這樣的錯誤。你可以用--port參數來改變。

  Q:為什麼我認證失敗?
  A:從你的命令行看來:你用的是

  > bash$ rsync -a 144.16.251.213::test test
  > Password:
  > @ERROR: auth failed on module test
  >
  > I dont understand this. Can somebody explain as to how to acomplish this.
  > All suggestions are welcome.

  應該是沒有以你的用戶名登陸導致的問題,試試rsync -a [email protected]::test test

  Q: 出現以下這個訊息, 是怎麼一回事?
  @ERROR: auth failed on module xxxxx
  rsync: connection unexpectedly closed (90 bytes read so far)
  rsync error: error in rsync protocol data stream (code 12) at io.c(150)

  A: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.secrets 中的密碼設定, 二端是否一致?

  Q: 出現以下這個訊息, 是怎麼一回事?

  password file must not be other-accessible
  continuing without password file
  Password:

  A: 這表示 rsyncd.secrets 的檔案許可權屬性不對, 應設為 600。請下 chmod 600 rsyncd.secrets

  Q: 出現以下這個訊息, 是怎麼一回事?

  @ERROR: chroot failed
  rsync: connection unexpectedly closed (75 bytes read so far)
  rsync error: error in rsync protocol data stream (code 12) at io.c(150)

  A: 這通常是您的 rsyncd.conf 中的 path 路徑所設的那個目錄並不存在所致.請先用 mkdir開設好備份目錄.

完!

文章參考於:http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第一種隔離模型: Guest1和Guest2都為虛擬機。 首先要瞭解在linux中的虛擬機的網卡都包含前半段和後半段,前半段在虛擬機上,後半段在宿主機上,這裡以centos6為例,上圖 eth0為Guest1虛擬機上的網卡,對應的後半段為vnet0,在Guest1上所有發往eth0的數據就直接發往v ...
  • 1. 登錄併進入你常用的用戶名下,查看其主目錄 命令: # su xxx $ cd xxx $ ls -a 2.查看並建立目錄和文件 首先看你的主目錄~/ 下是否有.vimrc文件,沒有就輸入指令 $ touch .vimrc 新建該文件 在主目錄下新建目錄 .vim,併進入.vim目錄,建立plu ...
  • 虛擬機備份轉移後,網路啟動異常,提示“SIOCSIFADDR: No such device” he problem lies in the fact that ethernet MAC addresses are cached. You need to remove a file to clear ...
  • .gz 由gzip壓縮工具壓縮的文件 .bz2 由bzip2壓縮工具壓縮的文件 .tar 由tar打包程式打包的文件 .tar.gz 先由tar打包,gzip壓縮 .tar.bz2 先由tar打包,bzip2壓縮 1:gzip 壓縮文件 此命令不能壓縮目錄 gzip +文件 在當前位置壓縮該文件 g ...
  • 手動安裝交叉編譯工具鏈: 第一步:準備事先下載好的安裝包 :arm-2009q3.tar.br2(下載地址:https://yunpan.cn/OcSEWQvsjFgntk 訪問密碼 311e)將安裝包放到虛擬機的共用文件夾下 在linux中,用戶自己裝程式一般裝在/usr/local 下 /bin ...
  • 這是第一次在博客園中寫自己的隨筆,也是第一次使用Markdown的編輯環境,值得紀念一下!希望在以後學習linux的道路上能多多記錄自己的學習心得和遇到問題的解決方法,朝著運維的方向邁出堅實的腳步。 問題描述 最近在編譯一個開源軟體時,在好不容易配置好各種編譯環境之後,由於各種許可權問題還是無法正常進 ...
  • 這是 WIN32 自動創建多級子目錄的 C++ 封裝類,用法簡單。 封裝沒有採用類的靜態函數方式,而是在構造函數裡面直接完成工作。沒什麼具體的原因,只是當時做成這樣了,這麼多年就一直這樣用了。 #ifndef lxx_hss_auto_create_folder_hss #define __HSS_... ...
  • http://code.csdn.net/news/2820879 想出一個難破解且容易記的密碼對不是一件簡單的事情。在我為電腦設定一個新密碼,或者線上註冊了一個新的賬號,需要輸入密碼的時候,腦袋就一片空白。不過,Linux下有幾個密碼生成工具可以使用,每一個工具都有自己的辦法生成安全的密碼。 1. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...