這個過程中使用rsync來進行操作日誌的同步,為避免遺忘特記錄下配置rsync服務以及進行日誌檔案傳輸的過程。
機器以及配置過程如下:
192.168.1.100作為rsync伺服器,提供rsync服務;
192.168.1.101 、192.168.1.102 、192.168.1.103、192.168.1.104作為應用伺服器;
(1)配置rsync服務端(192.168.1.100)
當前的絕大多數linux作業系統都安裝有rsnyc服務,如果不公升級版本的話,可以直接使用,要是需要公升級的話,可以參考網上教程。
檢查是否存在/etc/rsyncd.conf 檔案,不存在則建立,檔案的內容如下。
[plain]view plain
copy
pid file = /var/run/rsyncd.pid
port = 873
#只監控內網的ip位址,更加安全
address = 192.168.1.100
uid =root
gid = root
use chroot = yes
#客戶端只能寫入不能讀取
read only = no
write only = yes
#只允許指定ip位址的機器能夠訪問
hosts allow = 192.168.1.101 192.168.1.102 192.168.1.103 192.168.1.104
max connections = 4
motd file = /etc/rsyncd/rsyncd.motd
timeout = 300
transfer logging = yes
log file = /var/log/rsync.log
#客戶端上傳檔案時候的儲存模組
[ logs ]
#客戶端上傳檔案的儲存位址
path = /var/log/access_log
list = yes
ignore errors
auth users = zhangzk
#密碼檔案
建立密碼檔案 /etc/rsyncd/rsyncd.secrets,使用者名稱與密碼以冒號分割,整個檔案內容如下:
[plain]view plain
copy
zhangzk:239fjdalk@893246dasaatdfbsad
設定該檔案的600許可權
[plain]view plain
copy
chmod 600 /etc/rsyncd/rsyncd.secrets
以守護程序方式啟動該服務:
/usr/local/bin/rsync --daemon
檢查服務是否執行正常:
[plain]view plain
copy
-bash-3.2# ps -aef |grep rsync
root 8510 8481 0 18:30 pts/0 00:00:00 grep rsync
root 31787 1 0 aug14 ? 00:00:00 rsync --daemon
至此服務端全部搞定了。
(2)客戶端(以192.168.1.101為例)
客戶端相對要簡單得多了,只需要設定密碼檔案即可。
建立密碼檔案/etc/rsyncd/ rsyncd.pass,該密碼檔案的內容與服務端的密碼檔案中的密碼必須一致。
[plain]view plain
copy
239fjdalk@893246dasaatdfbsad
設定該檔案的600許可權
[plain]view plain
copy
chmod 600 /etc/rsyncd/rsyncd.pass
ok!現在可以使用rsync服務從客戶端192.168.1.101上無密碼的方式傳輸檔案到192.168.1.100上去了!
[plain]view plain
copy
rsync -vzrtopg --delete --progress $tarfile [email protected]::logs --password-file=/etc/rsyncd/rsyncd.pass
(3)建立crontab任務來定時傳輸日誌檔案
檢查並且建立指令碼檔案/var/scripts/rsync_operate_log.sh
[plain]view plain
copy
#!/bin/sh
filename=my_play_download.log.`date -d yesterday +%y-%m-%d`
logfile=$filepath$filename
ipaddress=101
tarname=$filename.$ipaddress.tar.gz
tarfile=$filepath$tarname
cd $filepath
if [ -e "$logfile" ]; then
tar -zcvf $tarname $filename;
else
echo "log file not existed.file=$logfile"
fi
if [ -e "$tarfile" ]; then
rsync -vzrtopg --delete --progress $tarfile [email protected]::logs --password-file=/etc/rsyncd/rsyncd.pass
rm -rf $tarfile
else
echo "log file not existed.file=$tarfile"
fi
設定該crontab指令碼檔案的700許可權:
[plain]view plain
copy
chmod 700 /var/scripts/rsync_operate_log.sh
再使用crontab -e命令來設定每日凌晨3點定時執行指令碼檔案即可:
[plain]view plain
copy
0 3 * * * /var/scripts/rsync_operate_log.sh > /dev/null 2>&1
linux 遠端檔案同步 shell
127.0.0.1 username password 192.168.12.12 usename password編寫expect shell usr bin expect f set timeout 1 永不超時,預設為10s set src file lindex argv 0 argv引數讀...
Linux 使用 rsync 同步檔案
rsync是unix下的一款應用軟體,它能同步更新兩處計算機的檔案與目錄,並適當利用差分編碼以減少資料傳輸量。rsync中的一項同類軟體不常見的重要特性是每個目標的映象只需傳送一次。rsync可以拷貝 顯示目錄內容,以及拷貝檔案,並可選壓縮以及遞迴拷貝。有的版本的 linux 可能已經預裝了 rsy...
Linux 命令 rsync 檔案同步
1 rsync src dest 2 rsync src user host dest rsync home zhangting 10.1.2.121 home v,verbose 詳細模式輸出。q,quiet 精簡輸出模式。c,checksum 開啟校驗開關,強制對檔案傳輸進行校驗。a,archi...