Rsync:
rsync 优点:
增量备份,支持socket,集中备份
缺点:
大量小文件同步的时候,比对时间较长,有的时候,rsync
进程会停止
同步大文件,10G这样的大文件有时也会有问题
中断,未完整同步前,是隐藏文件
rsync -avz /etc/hosts /tmp/ (相当于cp -a 命令)
rsync -avz --delete /null/ /tmp/
(null 目录有啥,tmp目录就有啥,2者内容是一样的)
rsync 推到远端 2 台服务器都要有rsync服务,
要不然会 command not found
rsync -avzP -e ‘ssh -p 22‘ /tmp/ [email protected]:/test
(把本地的tmp目录推到远端的test目录,目录的后面的斜线要带上)
rsync -avzp -e ‘ssh -p 22‘ [email protected]:/test/ /home/rdj/test/text/
(拉取远端的 注意test目录后的斜线要带上,拷贝的是目录里面的内容)
-e 表示 指定使用隧道
rsync服务端:
useradd rsync -s /sbin/nologin -M
id rsync
mkdir /backup
chown -R rsync /backup
ls -ld /backup/
echo ‘rsync_backup:123456‘ >/etc/rsync.password
chmod 600 /etc/rsync.password
ll /etc/rsync.password
rsync --daemon
ps -ef|grep rsync
netstat -lntup |grep rsync
lsof -i:873
加入开机自启动:
echo ‘rsync --daemon‘ >> /etc/rc.local
cat /etc/rc.local
cat /var/log/rsyncd.log
rsync 客户端:
1.创建密码文件
echo ‘123456‘ > /etc/rsync.password
chmod 600 /etc/rsync.password
2.发送文件
push: (对方要关闭873端口)
rsync [OPTION...] SRC... [[email protected]]HOST::DEST
rsync -avz /home/rdj/res/ [email protected]::backup --password-file=/etc/rsync.password
推拉都是客户端操作
无差异同步 --delete 参数 (尽量少用)
如果是推:
本地有,远端就有,本地没有,删除远端
如果是拉:
远端有,本地就有,远端没有,删除本地
awk 取得服务器IP:
ifconfig eth0|awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘
定时备份脚本:
#!/bin/bash
path=/backup
dir="`ifconfig eth0|awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘`_$(date +%F)"
mkdir $path/$dir -p &&\
/bin/cp /var/spool/cron/root $path/$dir/cron_root_$(date +%F) &&\
/bin/cp /etc/rc.local $path/$dir/rc.local_$(date +%F) &&\
rsync -avz $path/ [email protected]::backup --password-file=/etc/rsync.password
00 01 * * * /bin/sh /server/script/bakcup.sh > /dev/null 2>&1
#######################################
web 打包备份:
#最好配置文件,程序,日志 分开打包
#!/bin/bash
#打包到backup
path=/backup
ip="`ifconfig eth0|awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘`"
[ ! -d $path/$ip ] && mkdir $path/$ip -p
#备份配置文件
tar zcf $path/$ip/config.tar.gz /var/spool/cron/root /etc/sysconfig/iptables /server/script
#备份程序
tar zcf $path/$ip/www_$(date +%F).tar.gz /var/www/html/
#备份日志文件
tar zcf $path/$ip/log_$(date +%F).tar.gz /app/logs/
#rsync推送
rsync -avz $path/ [email protected]::backup --password-file=/etc/rsync.password
#删除7天以前的
find /backup -type f -name "*.tar.gz" -mtime +7|xargs rm -f
00 00 * * * /bin/sh /server/script/bak.sh > /dev/null 2>&1