A 到 B 免密码登陆
步骤:
【A-side】
1. ssh-keygen -t rsa
=> 三次Enter,在~/.ssh/生成id_rsa,id_rsa.pub
2. scp ~/.ssh/id_rsa.pub will@will02:~
【B-side】
1. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
2. chmod 600 ~/.ssh/authorized_keys
Done.
------------------------------------------------------------------
rsync scp 区别
rsync会自动比较文件内容,通过hash,看分段的hash是否都一样,然后把不同的部分传送过去。
------------------------------------------------------------------
Rsync备份过程
1. 目标: will02从will01上主动获取同步文件
(即will01运行rsync-daemon, will02只使用rsync tool)
2. 环境:
A will01 192.168.1.108 源文件夹/root/data
B will02 192.168.1.111 目标文件夹:/root/data
3. 步骤:
3.1 A端
1) /etc/ 下手动创建:
rsyncd.conf // rsync 主配置文件
rsyncd.pwd // permitted user&passwd
rsyncd.conf:
uid = root
gid = root
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd
logfile=/var/log/rsyncd.log
use chroot = yes
max connections =4
[data] //同步的模块名
path = /root/data //欲同步模块的物理地址
ignore errors
read only = false //
list = false
hosts allow = 192.168.1.111/24 //允许进行同步的Client
hosts deny = 0.0.0.0/32
auth users = will //登录用户名
secrets file = /etc/rsyncd.pwd //登陆用户密码(非ssh密码)
rsyncd.pwd (chmod 700 /etc/rsyncd.pwd)
will:123
2) 启动 rsync server
rsync --daemon [--config=/etc/rsyncd/rsyncd.conf]
验证是否开启: netstat -ln | grep 873
关闭 rsync server
killall rsync
加入开机启动
echo "/usr/bin/rsync --daemon" >> /etc/rc.local
3.2 B端
1) 创建 /root/rsync.pwd:
123 //此处密码同 primary 端内配置
2) chmod 600 /root/rsync.pwd
3)连接同步:
rsync -vzrtL --progress --delete --rsh=ssh will@will02::data /root/data --password-file=/root/rsync.pwd
参数解释:
will@will02::data {src}:欲被同步的源地址
/root/data {dst}:目标地址
注: 如果要让B的文件同步到A,则只需要更改一下上述{src}{dst}的先后位置
-a
存档模式
-h
保存硬连接
-q
制止非错误信息
-z
压缩文件数据在传输
-t
维护修改时间
-v
verbose,显示输出结果
-z
压缩
-r
recursive
-t
保持时间
-L
软link将视作普通文件
--progress 显示进度
--delete 如果服务器端删除了一文件,那么客户端也相应把文件删除,保持一致
--rsh=ssh 使用ssh建立连接和传输,避免出现 permission denied 的状况。
①把需要同步或不需要同步的文件写到一个文件中,如:/usr/filelist. 一个文件名一行.
加入下列 rsync 的命令参数
--include-from 只同步列表中的文件
例: --include-from=/usr/filelist
--exclude-from 不同步列表中的文件
例: --exclude-from=/usr/filelist
②--include
--exclude
例:--include = '/*.html' 只同步目录下的html文件 (/ 不能少)
注:excluede/include path 永远是相对路径
③忽略所有隐藏文件:--exlude=".*"
④显示隐藏目录${DIR}下的非隐藏文件,忽略所有隐藏文件:
--include=".${DIR}/" --exclude=".*"
注: include, exclude顺序具有优先级。
⑤只同步隐藏文件:
--include=".*/" --include=".*/.*" --exclude="*"
------------------------------------------------------------------
inotify + rsync 主备备份
1. 目标: will02(Web Server)实时向 will01(Backup)备份文件
2. 环境:
B will02 192.168.1.111 源文件夹/root/www
A will01 192.168.1.108 目标文件夹:/root/backup
3. 步骤:
A端 不动
B端 安装inotify-tools,并编写如下脚本:
- #!bin/bash
- #inotifywait 返回类似“10/03/09 15:31 /wwwpic/1”的字串, 在read时候用C D F细化
-
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f'\
-
-e modify,delete,create,attrib ${src} | while read C D F
-
do
- rsync -avz --delete --progress ${src} root@${ip}:${des} &&
- echo "${F} was rsynced"
- echo "----------------------------------------------"
-
done
inotifywait 参数
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e 事件
create,move,delete,modify,attrib //"创建,移动,删除,写入,权限"
阅读(1866) | 评论(0) | 转发(0) |