`

五步轻松搞定Linux下的文件同步(备份)

 
阅读更多

rsync文件同步配置

server端:主机名s170

client端:主机名s156

目录:/opt/test

用户:root

目标:配置rsync使得client端可以把server的/opt/test目录中的文件同步(备份)过来。

 

操作步骤一:确认rsync是否安装

server端和client端:

 

[root@s156 ~]# yum list rsync
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * extras: centos.ustc.edu.cn
 * updates: centos.ustc.edu.cn
Installed Packages
rsync.i386                                                                  3.0.6-4.el5_7.1                                                                   installed
[root@s156 ~]#

 

如果没有安装,则使用下面的命令安装

yum install -y rsync

 

 

操作步骤二:启动rsync服务

server端:

 

[root@s170 mysql]# chkconfig rsync --list
rsync           关闭
[root@s170 mysql]# chkconfig rsync on
[root@s170 mysql]# chkconfig rsync --list
rsync           启用
[root@s170 mysql]#

 

操作步骤三:设置ssh免登录

server端:

 

检查server端的.ssh目录

[root@s170 ~]# cd .ssh/
[root@s170 .ssh]# ls -a
.  ..  known_hosts

 

此步的目的是为了后面确认~/.ssh目录中文件的变化。

 

 

client端:

 

[root@s156 ~]# ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
0b:9d:3e:64:77:17:6a:d8:60:1e:ab:47:42:d1:8e:51 root@s156
[root@s156 ~]#


其中,/root/.ssh/id_dsa 是私钥,/root/.ssh/id_dsa.pub 是公钥。

 

 

现在,将公钥复制到server端。

[root@s156 .ssh]# ssh-copy-id -i ~/.ssh/id_dsa.pub root@s170
21
ssh: connect to host s170 port 22: Connection refused

由于s170机器的ssh服务端口已修改,使用默认的22端口访问失败。
注意:下面的命令行中指定端口的方法。

[root@s156 .ssh]# ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 21702 root@s170"
21
root@s170's password:
Now try logging into the machine, with "ssh '-p 21702 root@s170'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[root@s156 .ssh]#

 

server端:

 

[root@s170 .ssh]# ls -a
.  ..  authorized_keys   known_hosts
[root@s170 .ssh]# cat authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAKUqlhhT8mEj39aKgqgziI/TqYEtaz5epS/gWVTZBmtBiY3hgYK1F+/2ItwmKI85ouIuHN4y0axzsPZv27gkYAt+Qz2AZ+QQ4IthN8cNlPQzZ1dcqtoHzFAJYpgB/HcGh2RUl/mpkHXbllOIpr281nyr+Y9LyC/qF0031A0WegyzAAAAFQDroRvSeqS9mpsJmqm0wZpNbFOSGwAAAIA4j9tGmKQ/40fpfJZ+mC5GyW+nbuL9vYHqCujX7mLku7apCq7MXqXR/s2Q4av2T68J6qR2p84obDnqbCN+H3d+7JFblLjST9WSNGMXEiPZB9lTWFV38n6exJ96rSKfeBkdOUO49MYcNX/mMpypmIHqGfpvuXbQKqWFQH7WLxVAYwAAAIBWTyQiWkkLNZkRzKjjcORtYLHss+QfqvbygXNiZSuijZ+mXyjZ9A5CxU781FsU/NmD+i6qtSr5XVyRRuigIJGWAYZ8IcD2Ct18+WPzapgO6/Ptn9I2a+6dV44MbGTtn4Rax0UaSHzWHsg+G3Kvwh9x5gcvmuoSGeamVpmcsEHjZg== root@s156
[root@s170 .ssh]#

 

注:非对称加密方式下,公钥是可以公开的,而私钥必须妥善保管!

 

 

client端:

 

测试一下免登录ssh。

[root@s156 .ssh]# ssh -p21702 xxx.170
Last login: Sun May 20 11:14:50 2012 from 180.168.215.167
[root@s170 ~]#
[root@s170 ~]# ls
anaconda-ks.cfg  backup  install.log  install.log.syslog  setup
[root@s170 ~]# exit
logout

Connection to s170 closed.
[root@s156 .ssh]#

 

操作步骤四:使用rsync同步文件

server端:

创建测试文件

[root@s170 .ssh]# cd /opt/
[root@s170 opt]# mkdir test
[root@s170 opt]# cd test
[root@s170 test]# ls
[root@s170 test]# cat >1.txt
hello sync
[root@s170 test]#
[root@s170 test]# ls -l
总计 4
-rw-r--r-- 1 root root 11 05-20 17:10 1.txt

 


client端:

 

执行同步

 

[root@s156 .ssh]# cd /opt/
[root@s156 opt]# mkdir test
[root@s156 opt]# cd test
[root@s156 test]# ls
[root@s156 test]# rsync -avR -e ssh s170:/opt/test /    
ssh: connect to host s170 port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [receiver=3.0.6]
[root@s156 test]# rsync -avR -e "ssh -p 21702" s170:/opt/test /             
receiving incremental file list
opt/
opt/test/
opt/test/1.txt

sent 38 bytes  received 142 bytes  360.00 bytes/sec
total size is 11  speedup is 0.06
[root@s156 test]# ls -l
总计 4
-rw-r--r-- 1 root root 11 05-20 17:10 1.txt

 

server端:


又在server端创建了3.txt文件。

[root@s170 test]# cat >3.txt
ddd

ddd
[root@s170 test]#
[root@s170 test]# ls -l
总计 8
-rw-r--r-- 1 root root 11 05-20 17:10 1.txt
-rw-r--r-- 1 root root  9 05-20 17:21 3.txt
[root@s170 test]#

 

client端:

 

注意:这次rsync的参数少了-R,对比一下。
[root@s156 test]# rsync -av -e "ssh -p 21702" s170:/opt/test /
receiving incremental file list
test/
test/3.txt

sent 34 bytes  received 132 bytes  332.00 bytes/sec
total size is 20  speedup is 0.12
[root@s156 test]# ls -l
总计 8
-rw-r--r-- 1 root root 11 05-20 17:10 1.txt

怪了,没有3.txt。

[root@s156 test]# updatedb

[root@s156 test]# locate 3.txt
/test/3.txt
[root@s156 test]#

如果没有-R参数,要像下面这样写。

[root@s156 test]# rsync -av -e "ssh -p 21702" s170:/opt/test /opt
receiving incremental file list
test/
test/3.txt

sent 34 bytes  received 132 bytes  332.00 bytes/sec
total size is 20  speedup is 0.12
[root@s156 test]# ls
1.txt  3.txt
[root@s156 test]#

 

操作步骤五:使用crontab定期执行同步

使用 crontab 执行同步的最小时间粒度为 1分钟,也就是说最长可能要1分钟才能将新增的文件同步。

如果是主备冗余的方式,这问题也不大。

 

client端:

 

crontab -e

* * * * * rsync -avR -e "ssh -p 21702" s170:/opt/test /

 

现在来测试crontab设置是否有效

 

server端:

 

[root@s170 test]# cat >c.txt
hello world
[root@s170 test]#


client端:

 

[root@s156 test]# ls -l
总计 12
-rw-r--r-- 1 root root 11 05-20 17:10 1.txt
-rw-r--r-- 1 root root  9 05-20 17:21 3.txt
-rw-r--r-- 1 root root 12 05-20 18:22 c.txt
[root@s156 test]#

 

成功了!

 

本文链接:http://codingstandards.iteye.com/blog/1539363   转载请注明出处

 

 

PS:存在的问题:

使用crontab方式执行rsync,不能实时同步文件。有文章说道,可以采用inotify实现实时通知同步。下次有空再试验一下。

 

 

 

 

 

 

4
3
分享到:
评论
2 楼 liuyuanhui0301 2012-05-24  
  
1 楼 mikixiyou 2012-05-24  
写的不错。rsync确实挺好用的。

相关推荐

    参考资料-五步法搞定战略绩效实战设计.zip

    《五步法搞定战略绩效实战设计》是一份深入探讨企业战略绩效管理的参考资料,通过一套系统的方法论,帮助企业实现战略目标与员工绩效的有效对接。在实际应用中,五步法通常包括了明确战略、构建指标、设定目标、执行...

    五步轻松实施Docker容器技术.docx

    五步轻松实施Docker容器技术.docx

    锐捷交换机备份配置文件的操作方法[汇编].pdf

    在 CTRL 模式下,备份配置文件的方法分为五步: 步骤一:打开超级终端,设置端口属性,然后进入 CTRL 层。 步骤二:在 CTRL 层,选择备份配置文件,输入文件名为 config.text,然后点击传送菜单 -> 接收文件。 ...

    五步搞定Android开发环境部署

    - PATH:添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin,使系统可以在任何目录下执行JDK的可执行文件。 - CLASSPATH:指定Java类库的位置,通常设置为%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;,"."代表当前...

    【ASP.NET编程知识】ASP.NET五步打包下载Zip文件实例.docx

    ASP.NET 五步打包下载 Zip 文件实例 本文将详细介绍 ASP.NET 五步打包下载 Zip 文件实例的实现方法,包括下载 dll、下载方法、调用方法、测试结果和最后的浅谈等五个步骤。 标题解释 ASP.NET 五步打包下载 Zip ...

    五步搞定Android开发环境部

    - `CLASSPATH`变量指定了Java程序运行时查找类文件的路径,通常包含`%JAVA_HOME%\lib\dt.jar`和`%JAVA_HOME%\lib\tools.jar`。 ### 第三步:下载安装Eclipse Eclipse是一款流行的开源IDE,对于Android开发,推荐...

    王兴魁ajax五步

    **王兴魁Ajax五步详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升了用户...

    Linux建立服务器与windows共享文件

    Linux建立服务器与windows共享文件 五步实现具体操作

    五步加固顺序顺序.doc

    本文将围绕 Linux 系统的五步加固顺序顺序进行详细介绍。这些步骤旨在提高 Linux 系统的安全性,防止恶意攻击和未经授权的访问。 第一步:删除 autorun 文件 在 Linux 系统中,autorun 文件可能会被恶意攻击者用来...

    五步生成数据库完全版(易语言2005年大赛三等奖).

    而“三 五步生成数据库完全版”很可能是项目的主程序或者源代码文件,包含了实现上述功能的具体代码。 总结而言,这个项目是一个易语言开发的数据库管理工具,它通过五个简单的步骤帮助用户创建和管理数据库,对于...

    LinuxLive USB Creator

    Linux Live USB Creator 2.8.15 – 轻松制作Linux可启动U盘 在U盘中安装一个可以随身携带的Linux系统,Ubuntu、Fedora、Opensuse、Archlinux、linux mint等等200多种Linux类型想装哪个就装哪个!你可以用它来启动...

    五步让你实现供应链管理的同步.docx

    供应链管理的同步是现代制造业和电子商务领域中至关重要的概念,旨在优化从原材料采购到最终产品交付的整个流程,以提高效率、降低成本并增强客户满意度。实现供应链管理的同步需要一系列策略和工具,以下五个步骤...

    五步轻松清洗电脑键盘

     首先将键盘插头从主机上拔下,翻过来就可以看见背面的面板螺丝。将背面的所有螺丝全部拧下,就可以将后盖拿下来。  2.拆下电路板和电路胶片  将键盘的后盖拆下后就看到了软的电路胶片。电路胶片的结构是3层,...

    五步教你用idsdt软件来驱动你的显声卡驱动(更新cedoc文件).pdf

    标题中的“五步教你用idsdt软件来驱动你的显声卡驱动(更新cedoc文件)”是一个教程,旨在指导用户如何使用idsdt软件来驱动显卡和声卡驱动,并且更新cedoc文件。idsdt是一款用于处理ACPI表,特别是DSDT...

    成功文案五步法则.rar

    在提供的文件中,"成功文案五步法则.doc"很可能是详细讲解这五个步骤的文档,而"下载说明.txt"可能包含了如何获取和使用这份教程的指南。"A5下载- 更全的站长资源平台.url"则可能是一个链接,指向一个更全面的网站...

    武术基本拳法《五步拳》PPT.doc

    平衡是武术中不可或缺的部分,如提膝平衡和望月平衡,要求在不稳定的状态下保持身体稳定。跌扑动作如扶地后倒、抢背和鲤鱼打挺,既练习了摔倒后的自我保护,也锻炼了身体的恢复能力。 最后,五步拳的具体动作包括...

    五步让你实现供应链管理的同步.pdf

    供应链管理的同步是现代制造业追求高效运营的关键目标。这一过程涉及实时信息的收集、分析和应用,以确保从采购到交付的每一个环节都能顺畅运行。本文将深入探讨实现供应链管理同步的五个步骤,并介绍APS车间排产...

    安全五步工作法.doc

    "安全五步工作法"是一种系统化的工作安全流程,旨在提高员工的安全意识和预防事故的能力。这个方法主要包括五个步骤:暂停、思考、识别、确认、执行,适用于各个行业的作业活动,特别是那些潜在风险较高的岗位。 1....

    五步轻松实现zTree的使用

    1、导入zTree的配置文件 [removed][removed] <link rel=stylesheet href=../js/ztree/zTreeStyle.css />  2、在所需要的位置设置class=”ztree” <ul id=baseMenu class=ztree></ul>

    五步轻松设计出电容式触摸传感器(1):原理图设计

    "五步轻松设计出电容式触摸传感器(1):原理图设计" 在本文中,我们将重点介绍如何通过五个简单的步骤来设计出可靠的电容式触摸传感器。电容式触摸传感器可以完全融入产品设计之中,而且永远不会磨损。因此,基于...

Global site tag (gtag.js) - Google Analytics