Chinaunix首页 | 论坛 | 博客
  • 博客访问: 374273
  • 博文数量: 124
  • 博客积分: 2911
  • 博客等级: 少校
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-15 15:57
文章分类

全部博文(124)

文章存档

2012年(6)

2011年(26)

2010年(92)

我的朋友

分类: LINUX

2012-03-05 19:38:38

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 的状况。
4) 筛选同步文件
   ①把需要同步或不需要同步的文件写到一个文件中,如:/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,并编写如下脚本:
  1. #!bin/bash
  2. #inotifywait 返回类似“10/03/09 15:31 /wwwpic/1”的字串, 在read时候用C D F细化

  3. inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f'\
  4. -e modify,delete,create,attrib ${src} | while read C D F
  5. do
  6.     rsync -avz --delete --progress ${src} root@${ip}:${des} &&
  7.     echo "${F} was rsynced"
  8.     echo "----------------------------------------------"
  9. done

inotifywait 参数
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e 事件
create,move,delete,modify,attrib //"创建,移动,删除,写入,权限"

阅读(1816) | 评论(0) | 转发(0) |
0

上一篇:git_step

下一篇:修改ls的目录显示颜色

给主人留下些什么吧!~~