1. 程式人生 > >wordpress利用rsync同步備份

wordpress利用rsync同步備份

als 計劃任務 package .bat sync 多個 安裝 efi 配置

我搭建的wordpress服務器現在使用的系統是opensuse,
服務器上面已做腳本和計劃任務將wordpress使用的數據庫與web目錄每天壓縮備份放到
/data/backup目錄下
operation@opensuse-wordpress:~> tree /data
/data
├── backup
│ ├── db
│ │ ├── wordpress_20171220.sql
│ │ ├── wordpress_20171220.sql.bak
│ │ └── wordpress_20171221.sql.gz
│ └── wordpress
│ ├── wordpress_20171220.tar.gz
│ ├── wordpress_20171220.tar.gz.bak
│ └── wordpress_20171221.tar.gz
└── shell
├── mysql_backup.sh
└── wordpress_backup.sh

所以現在欠缺的是再弄個異地備份(opensuse充當服務器,平常使用的公司pc充當客戶端去拿取數據備份回來),
這一步實現後再考慮在雲上專門用一臺服務器做為存儲備份的服務器,opensuse上傳或同步備份數據到文件服務器上,
任意客戶端安裝同步的客戶端軟件從文件服務器上面拉取數據下來(其實就是私有性質的堅果雲)。

1、opensuse上安裝rsync做為同步文件服務端
operation@opensuse-wordpress:~> sudo zypper in rsync
[sudo] password for root:
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
rsync

1 new package to install.
Overall download size: 323.2 KiB. Already cached: 0 B. After the operation, additional 625.5 KiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package rsync-3.1.0-8.4.x86_64 (1/1), 323.2 KiB (625.5 KiB unpacked)
Retrieving: rsync-3.1.0-8.4.x86_64.rpm .....................................................................[done]
Checking for file conflicts: ...............................................................................[done]
(1/1) Installing: rsync-3.1.0-8.4.x86_64 ...................................................................[done]

2、配置rsync
rsync服務器端需要兩個配置文件:rsyncd.conf、rsyncd.secrets。
其中rsyncd.conf默認存放在/etc/目錄下,同時它也是rsync服務器的主配置文件。
該文件配置了rsync服務器的控制認證、訪問、日誌記錄等等。而rsyncd.secrets主要用於存儲rsync用戶名和密碼。
如果是編譯安裝的rsync是不會生成以上這兩個配置文件的,需要我們手工進行創建。
不過在這我是用zypper安裝的,當然直接在/etc下面就有rsyncd.conf和rsyncd.secrets文件。
sudo vim /etc/rsyncd.conf

gid = users
read only = true
use chroot = true
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = trusted.hosts
slp refresh = 300
use slp = false
secrets file=/etc/rsyncd.secrets
##以上是全局配置

[backup]
uid = root
gid = root
path = /data/backup
ignore errors
read only = true
auth users = wordpress
secrets file = /etc/rsyncd.secrets
#以上是針對備份同步目錄的配置

rsync默認是在nobody用戶下運行的,
但是我們測試為了同步時不為各種權限的事情煩惱,就讓其在root用戶下運行。

配置文件修改完成後,到創建密碼文件:
vim /etc/rsyncd.secrets
將wordpress的用戶和密碼編輯進去,例如:
wordpress:ABCabc123

註:該密碼文件中的用戶和密碼可以進行自定義,同時該用戶不一定要在服務器中的系統用戶中存在。密碼文件創建完畢後,還需要將其權限設置為600,否則會在以後同步時提示驗證出錯。(zypper安裝完成的不用再做此步驟也是600了)
chmod 600 /etc/rsyncd.secrets

一個rsync配置文件中可以包含多個認證模塊(比如上面列表的[backup]),同時一個密碼文件中也可以存放多個用戶和其對應的密碼。其中每一個認證模塊可以對應不同的客戶端。

3、啟動rsync
sudo rsync --daemon
可以pstree看rsync進程是否有運行和netstat看873端口開起來沒有。

4、windows客戶端安裝rsync
https://www.itefix.net/cwrsync
最新版cwRsync-5.5.0-32位的下載鏈接如下:
https://www.itefix.net/dl/cwRsync_5.5.0_x86_Free.zip

下載解壓完成,雙擊目錄下的cwrsync.cmd或在cmd命令提示窗口下運行完成批處理安裝。
安裝完成後,阿裏雲服務器安全組上開通873端口(放行rsync)

運行rsync命令去拉取服務器上的備份目錄文件,出現報錯:
D:\soft\cwRsync\bin> ./rsync -avz [email protected]::backup /wordpress
@ERROR: access denied to backup from UNKNOWN (183.x.x.x)
rsync error: error starting client-server protocol (code 5) at main.c(1648) [Receiver=3.1.2]

還是拒絕客戶端的訪問,於是我在配置文件中直接插入一句
hosts allow = 183.x.x.x

註:x.x.x是指代你服務器和客戶端ip地址。在這裏我不能直接暴露真實的ip出來。實際上操作的時候當然不是敲x.x.x。

再嘗試就可以出現讓你輸入密碼的交互了,可見默認全局配置是禁止了外網訪問?
D:\soft\cwRsync\bin> ./rsync -avz [email protected]::backup /wordpress
Password:
(註:密碼交互輸入時不會顯示密碼)
receiving incremental file list
created directory /wordpress
./
db/
db/wordpress_20171220.sql
db/wordpress_20171220.sql.bak
db/wordpress_20171221.sql.gz
db/wordpress_20171222.sql.gz
wordpress/
wordpress/wordpress_20171220.tar.gz
wordpress/wordpress_20171220.tar.gz.bak
wordpress/wordpress_20171221.tar.gz
wordpress/wordpress_20171222.tar.gz

sent 195 bytes received 146,589,159 bytes 133,202.50 bytes/sec
total size is 149,629,764 speedup is 1.02

當然,後面要做成計劃任務是不想再彈密碼輸入交互的,新建一個單純存放密碼的文本文件,
將密碼保存進去後,命令就會變成:
D:\soft\cwRsync\bin> ./rsync -avz [email protected]::backup /wordpress --password-file=/passwd.txt
receiving incremental file list

sent 22 bytes received 331 bytes 706.00 bytes/sec
total size is 149,629,764 speedup is 423,880.35
註意:在上面命令中我是將備份文件都同步到D:\soft\cwRsync\wordpress路徑中,/根目錄就是cwRsync安裝的目錄。
如果是要定義放到windows系統的D盤則路徑表示為/cygdrive/d/
不想每次都進入到cwRsync目錄下再執行命令,就在系統環境變量Path中添加上D:\soft\cwRsync\bin就可以了。

5、執行計劃任務去同步服務器的備份文件

把上述命令,寫到一個批處理文件中,然後在任務計劃中進行配置。
新建rsync_wordpress.bat文件中寫入一行:
rsync -az [email protected]::backup /wordpress --password-file=/passwd.txt
保存。
打開任務計劃程序,創建任務,設置好計劃任務,
觸發器是每天的中午12點40分,操作是運行批處理腳本rsync_wordpress.bat。

驗證生效。

文:鐵樂與貓

wordpress利用rsync同步備份