rsync
http://rsync.samba.org/
https://download.samba.org/pub/rsync/rsync.html
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync -avz --progress -e 'ssh -p 3520' --chown=www-data:www-data /data/www/wwwroot/xxx/ root@ip:/data/www/wwwroot/xxx
rsync -avz --progress -e 'ssh -p 3520' /data/nginx_log root@ip:/data/
rsyncd.conf配置文件:
# cat /etc/rsyncd.conf
uid = nobody
gid = nobody
address = x.x.x.x
use chroot = no
max connections = 20
strict modes = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log format = %t %a %m %f %b
[logs]
path = /data/logs/
ignore errors = yes
read only = no
write only = no
list = no
hosts allow = x.x.x.x,x.x.x.x
hosts deny = *
uid = root
gid = root
使用rsync拉取日志的shell脚本:
#!/bin/bash
MYIFS=":::"
while read line
do
echo $line | grep '^#' > /dev/null && continue
echo ============================================================================================
echo `date +"%F %T"` start_time
FDISK=`echo $line | awk -F"$MYIFS" ' { print $1; } '`
DOMAIN=`echo $line | awk -F"$MYIFS" ' { print $2; } '`
IP=`echo $line | awk -F"$MYIFS" ' { print $3; } '`
#echo $DOMAIN $IP
for x in $IP
do
echo "------[ $DOMAIN $x ]------"
DIR=/$FDISK/logs_m/nginx/$DOMAIN/$x/
#echo $DIR
test -d $DIR || mkdir -p $DIR
rsync -avz root@$x::nginxlog/$DOMAIN/access.log.*.gz /$FDISK/logs_m/nginx/$DOMAIN/$x/
#echo rsync -avz root@$x::nginxlog/$DOMAIN/access.log.*.gz /$FDISK/logs_m/nginx/$DOMAIN/$x/
echo ""
done
echo `date +"%F %T"` end_time
done
配置文件:
#PARTITION:DOMAIN:::IP1 IP2 (多个IP之间使用空格分开)