rsync 免密方式自动同步文件:

rsync的客户端方式能够自动同步文件,非常方便,但是它在远程拷贝文件之前提示还需要输入一个密码,要实现脚本自动拷贝,必须要优化掉这个步骤,让rsync以密码文件的方式工作,就不需要再手工输入密码了,但密码文件的方式工作需要两步简单的配置

环境说明:

suse安装后自带rsync命令程序,使用最简单的客户端方式工作。

备份机:192.168.11.25, 同步文件的目的地。

服务器:192.168.11.24, 同步文件的数据源,一般是从服务器拷贝数据去备份。

命令:

一、在备份机192.168.0.1上产生密码文件,有了这个文件,我们就可以不再手动输入密码了:

ssh-keygen

输入这个命令之后 一路回车  yes

二、拷贝这个密码文件到服务器主机上:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.11.24

三、就这么简单,我们在备份机上用rsync同步命令试试,果然再不需要手工输入密码了:

#没有斜杠/
rsync -av 192.168.11.24:/home/runner/pbmonitor  /usr/local/rsync/   #同步文件夹 pbmonitor
#有斜杠/
rsync -av 192.168.11.24:/home/runner/pbmonitor/  /usr/local/rsync/  #不同步文件夹 pbmonitor

四、我们把这个命令加到定时脚本中,让备份服务器自动每天从服务器主机上同步一次文件。

五、我们不能让备份机上的文件无休止的增长,需要脚本命令删除掉10天前的文件:

find  /usr/local/rsync/*  -mtime +10 -exec rm -f {} \;

六、安装Inotify-tools实时触发rsync进行同步

这里可以参考github上的官方wiki文档(包含安装及配置使用示例)

Home · inotify-tools/inotify-tools Wiki · GitHub

1、先安装epel源

yum install -y epel-release && yum update

1、下载安装Inotify-tools

# uname -r        #Linux下支持inotify的内核最小为2.6.13
2.6.32-642.el6.x86_64# 安装前要先下载epel源
# yum install inotify-tools -y查看其程序是否安装成功
# rpm -qa inotify-tools
inotify-tools-3.14-1.el6.x86_64查看程序包含的文件
#rpm -ql inotify-tools
/usr/bin/inotifywait
/usr/bin/inotifywatch
/usr/lib64/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0.4.1
/usr/share/doc/inotify-tools-3.14
/usr/share/doc/inotify-tools-3.14/AUTHORS
/usr/share/doc/inotify-tools-3.14/COPYING
/usr/share/doc/inotify-tools-3.14/ChangeLog
/usr/share/doc/inotify-tools-3.14/NEWS
/usr/share/doc/inotify-tools-3.14/README
/usr/share/man/man1/inotifywait.1.gz
/usr/share/man/man1/inotifywatch.1.gz

2、配置inotify-tools

# sysctl -a|egrep -i "max_queued_events|max_user_watches|max_user_instances"    #修改inotify默认参数(inotify默认内核参数值太小)
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
fs.inotify.max_queued_events = 16384
fs.epoll.max_user_watches = 201420# vim /etc/sysctl.conf 添加
fs.inotify.max_queued_events = 99999999
fs.inotify.max_user_watches = 99999999
fs.inotify.max_user_instances = 65535#sysctl  -p   参数立即生效# cat /proc/sys/fs/inotify/{max_user_instances,max_user_watches,max_queued_events}  #检查参数是否生效
65535
99999999
99999999注释:max_queued_events:inotify队列最大长度,如果值太小,会出现"** Event Queue Overflow **"错误,导致监控文件不准确max_user_watches:要同步的文件包含多少目录,可以用:find /app/rsync_server/ -type d | wc -l 统计,必须保证max_user_watches值大于统计结果(这里/app/rsync_server/为同步文件目录)max_user_instances:每个用户创建inotify实例最大值

3、创建实时同步脚本

# vim  /usr/local/inotify/rsync.sh
#!/bin/bash
src_dir="/app/rsync_server/"
dst_dir="app_rsync_client"
exclude_dir="/usr/local/inotify/exclude.list"
rsync_user="rsync"
rsync_passwd="/etc/passwd.txt"
dst_ip="192.168.0.45"
rsync_command(){rsync -avH --port=873 --progress --delete --exclude-from=$exclude_dir $src_dir $rsync_user@$ip::$dst_dir --password-file=$rsync_passwd
}
for ip in $dst_ip;dorsync_command
done/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $src_dir \
| while read file;dofor ip in $dst_ip;dorsync_commandecho "${file} was rsynced" >> /tmp/rsync.log 2>&1donedone 注释:src_dir="/app/rsync_server/"    #源服务器同步目录dst_dir="app_rsync_client"    #目标服务器rsync同步目录模块名称exclude_dir="/usr/local/inotify/exclude.list"    #不需要同步的目录,如果有多个,每一行写一个目录,使用相对于同步模块的路径;例如:不需要同步/app/rsync_server/"目录下的a目录和b目录下面的b1目录,exclude.list文件可以这样写a/b/b1/rsync_user="rsync"    #目标服务器rsync同步用户名rsync_passwd="/etc/passwd.txt"    #目标服务器rsync同步用户的密码在源服务器的存放路径dst_ip="192.168.0.45"    #目标服务器ip,多个ip用空格分开
##赋权,添加开机启动# chmod +x /usr/local/inotify/rsync.sh
# touch /usr/local/inotify/exclude.list
# vim /etc/rc.d/rc.local
nohup /bin/sh /usr/local/inotify/rsync.sh &
# nohup /bin/sh /usr/local/inotify/rsync.sh &

4、测试

在rsync_server(数据源)192.168.0.44的/app/rsync_server创建文件
# cd /app/rsync_server
# touch test{1..9}
# touch test{a..j}
# ls
test1  test2  test3  test4  test5  test6  test7  test8  test9  testa  testb  testc  testd  teste  testf  testg  testh  testi  testj在rsync_client(目标端)192.168.0.45上查看已经同步
# cd /app/rsync_client
# ls
test1  test2  test3  test4  test5  test6  test7  test8  test9  testa  testb  testc  testd  teste  testf  testg  testh  testi  testj

RSYNC 自动同步文件免密相关推荐

  1. u盘同步服务器文件,GoodSync配合U盘助你自动同步文件

    首页 > 新闻动态 GoodSync配合U盘助你自动同步文件 目前许多用户需要把文件带回家处理,保持单位和家里的文件同步非常重要.这里介绍一个自动同步文件的"机器人":Goo ...

  2. DOS批处理+ftp自动同步文件

    自己电脑上的flashFXP未带自动同步文件功能,突然想到自己整个批处理文件+windows的任务实现自动同步文件! 系统:windows 环境:已安装flashFXP(版本应该没限制) 由于FTP服 ...

  3. 【linux】利用ssh、sshpass和rsync命令,实现免密同步文件,指定非22端口

    文章目录 rsync安装 sshpass安装 rsync常用参数说明 sshpass命令 免密登录,默认22端口 # sshpass -p password rsync -avz user@ip:/d ...

  4. 【同步】文件同步命令rsync |自动同步软件FreeFileSync

    目录 linux文件同步 即看即用 详细说明 FreeFileSync 同步文件 1.设置同步源和目标 2.手动同步 3.自动同步 设置同步方向 批处理 其他类似软件 linux文件同步 即看即用 本 ...

  5. 无需密码通过ssh执行rsync来同步文件

    1.通过ssh执行rsync(需要密码) 通过ssh帐户(需要密码)执行rsync,将文件同步镜像到远程服务器. 下面这个例子将本地的/home/ramesh同步到远程目录/backup/ramesh ...

  6. rsync单项同步文件

    我主要用rysnc同步文件,rsync是一款非常优秀的文件同步管理软件,它也支持多种操作系统平台,在Unix环境中,rsync有着卓绝的功绩.希望这篇文档能对一些朋友有所帮助. 1. Install ...

  7. linux之rsync远程同步文件

    rsync全名Remote Sync,是类unix下数据镜像的备份工具.可以方便的实现本地,远程备份文件,rsync最重要的一点是支持增量备份. 命令语法 rsync [OPTION]... SRC ...

  8. linux scp 同步文件夹,Solaris下用scp自动同步文件

    1. scp同步文件脚本 //syntest.sh #!/bin/bash # Setting cdm path is used to store client software host_dir=& ...

  9. idea 自动同步文件本地内容设置

    刚开始从eclipse转到idea,发现idea从svn同步代码后,点开一个java类报错 说是某个方法不存在,以为是别人代码没有提全,就点到别人代码里面去看,顶行出现 "File was ...

最新文章

  1. 我最看不惯的几个公众号!
  2. 基于python的螺纹钢28分钟策略
  3. Windows批处理
  4. 曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生作者:Cat_Lee 来源:博客园 发布时间:2009-05-30 20:25 阅读:1104 次 原文链接 [收藏]
  5. 励志:读书七年,为了挣钱,我竭尽全力
  6. jquery获取文档高度和窗口高度的例子
  7. mysql备份到带库_RMAN备份恢复——备份到带库的性能
  8. Pygame实现”走四棋儿“双人对战小游戏
  9. db2exc_971_WIN_x86,db2数据库下载,不是官方下载,直接可下
  10. 多年来我的创业感悟,穷人与富人的赚钱思维模式丨国仁猫哥
  11. ASR - OpenAI whisper
  12. 解决炉石传说战网无法更新问题
  13. Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Ecli
  14. bzoj-1233 [Usaco2009Open]干草堆tower
  15. vscode配置c语言并优化
  16. rust future async/await
  17. 达梦数据库一些疑难杂症的解决
  18. 非常好的免费在线计算机词典
  19. 麒麟系统启用SELinux
  20. Axios的GET与POST区别

热门文章

  1. stata命令汇总_Stata常用命令应知应会(500条)
  2. 如何学习vc++(vc的用处)
  3. css 宽度为百分比, 高度和宽度相等的设置
  4. 一阶差分序列garch建模_最全:ARCH, GARCH等模型家族是什么?软件如何做?怎么解释?...
  5. MATLAB画三维动态魔方/旋转魔方/旋转立方体
  6. Excel交叉引用及其应用实例
  7. 防缓存穿透利器-布隆滤器(BloomFilter)
  8. 计算机加密防止文件外泄,电脑文档加密系统哪个好?文档加密软件如何防止文件流通使用泄密...
  9. TIA博图——基本操作
  10. [转载] 苹果 AppStore 应用商店生存之道