使用expect进行 rsync进行服务器同步备份

使用expect去除交付过程,达到能够实现服务器同步备份

第一:安装expect

检查是否已安装expect

rpm -qa | grep tcl

tclx-8.4.0-5.fc6

tcl-8.4.13-4.el5

第二:安装expect

下载地址:

http://dl.oschina.net/soft/expect

检查tcl的安装位置

rpm -qa|grep tcl

需要安装tcl-devel

rpm -ivh   tcl-devel-8.4.13-4.el5.x86_64.rpm

解压expect源码包

tar xzvf expect-5.45-1374045102000.tar.gz

cd expect5.45/

编译:需要查找/usr/lib64/tclConfig.sh所在的路径

./configure --with-tcl=/usr/lib64/

make

make install

运行expect

[[email protected] expect5.45]# expect

expect: error while loading shared libraries: libexpect5.45.so: cannot open shared object file: No such file or directory

find / -name libexpect5.45.so

ln -sf /usr/lib/expect5.45/libexpect5.45.so  /usr/lib64/libexpect5.45.so

再运行expect

expect1.1> [[email protected] /]#

就好了

加密,解密工具

下会进行expect 脚本的书写:

#!/usr/bin/expect -f
##########################################################
#     1.service ip
#     2.User
#     3.userPassword
#     4.localPath  [本地路径]
#     5.serverPath [server端路径]
#返回值:
#     0  成功
#     1  参数个数不正确
###########################################################

proc usage {} {
    regsub ".*/" $::argv0 "" name
    send_user "Usage:\n"
    send_user "$name serviceip  User userPassword localPath serverPath\n"
    exit 1
}

## 判断参数个数
if {[llength $argv] != 5} {
    usage
}

#设置变量值
set severip [lindex $argv 0]
set User [lindex $argv 1]
set userPassword [lindex $argv 2]
set localPath [lindex $argv 3]
set serverPath [lindex $argv 4]

#定义变量标记rsync连接时是否输入yes确认
set inputYes 0

#rsync -avz /etc/ 192.168.15.234:/home/7_8
spawn rsync -avz ${localPath} ${User}@${severip}:${serverPath}
expect {
    -nocase -re "yes/no" {
        send -- "yes\r"
        set inputYes 1
    }
    -nocase -re "assword: " {
        send -- "${userPassword}\r"
				interact
    }
    -nocase -re "Connection refused" {
        send_error "Sftp services at ${ftpServerIp} is not active.\n"
        exit 2
    }
    timeout {
        send_error "Connect to sftp server ${ftpUser}@${ftpServerIp} timeout(10s).\n"
        exit 8
    }
}

#如果输入了yes确认,输入密码
if {$inputYes==1} {
    expect {
        -nocase -re "assword: " {
            send -- "${userPassword}\r"
            interact
			}
    }
}

Rsync(remote synchronize) 是一个远程数据同步工具,可以使用“Rsync算法”同步本地和远程主机之间的文件。

rsync的好处是只同步两个文件不同的部分,相同的部分不在传递。类似于增量备份,

这使的在服务器传递备份文件或者同步文件,比起scp工具要省好多时间。

具体的用法:

1.在本地机器上对两个目录同步

$ rsync -zvr filename1 filename2

上述代码是将filename1中的文件与filename2中的文件同步,如果将filename2中的文件同步到filename1中,修改代码为:

$ rsync -zvr filename2 filename1

参数说明:

-z 开启压缩

-v 详情输出

-r 表示递归

2.使用rsync –a 同步保留时间按标记

$ rsync -azv filename1 filename2

使用上述命令,将filename2中新同步的文件的时间与filename1中的创建的时间相同,

它保留符号链接、权限、时间标记、用户名及组名相同。

3.从本地同步文件到远程服务器

$rsync -avz filename1 [email protected]:/home/redhat/filename2

上述命令是将本地的filename1同步到远程192.168.0.1的主机上。

注意:如果远程主机的端口不是默认的22端口,假如是3000端口,上述的命令修改为,

$ rsync -avz ‘-e ssh -p 4000‘ filename1 [email protected]:/home/redhat/filename2

4.将远程服务器的文件同步到本地

与步骤3类似,只是将filename1与远程服务器的位置对换一下,

$rsync -avz [email protected]:/home/redhat/filename2 filename1

同理如果端口不是22,使用以下命令

$ rsync -avz ‘-e ssh -p 4000‘ [email protected]:/home/redhat/filename2 filename1




使用expect进行 rsync进行服务器同步备份,布布扣,bubuko.com

时间: 2024-07-30 09:26:04

使用expect进行 rsync进行服务器同步备份的相关文章

Rsync + sersync 实时同步备份

Rsync + sersync 实时同步备份 一      Rsync + Sersync  实时同步介绍 1.Rsync 服务搭建介绍 云机上搭建Rsync server,在本地搭建Rsync Clinet. 2. Sersync 服务搭建介绍 在本地服务器上搭建 Sersync  Server  检测本地的ftp目录变化,实时同步到云机上 二.Rsync编译安装 1.检查本机是否存在 [[email protected]云机 ~]# rpm -qa  rsync rsync-3.0.6-12

inotify介绍及rsync + inotify 实时同步备份

1.前言 rsync (remote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动备份,又可以结合ssh实现远程数据备份的安全,种种特性使他看起来相当优秀.但如果需备份数据十分庞大时,它的不足之处就显现出来了,比如每次执行同步操作时,rsync都会扫描全部数据进而计算出增量部分,而后再同步增量数据,这将会十分耗时,使其变得低效:并且受限于crond计划任务最小时间间隔

如何通过rsync+sersync 实现同步备份

3.rsync+sersync更快更节约资源实现web数据同步4.unison+inotify实现web数据双向同步 一:为什么要实现同步备份 服务器上有些重要文件或数据时,可以把他们多备份一份到其他服务器上,这样就不怕数据或文件丢失了. 二:环境的搭建 服务器A:192.168.1.10 源服务器 服务器B: 192.168.1.20 目的服务器 我们要实现的就是把A服务器上的文件同步到B服务器上,从而实现备份.我们主要是在B服务器上安装配置rsync,在A服务器上安装配置sersync,通过

使用rsync实现服务器数据备份

知识点: 实战1: 备份/var/www/html 目录 实战2: 使用ssh密钥实现无交互备份 实战3: 配置rsync 服务器及需要备份的目录,不使用系统用户 实战4: rsync + inotify实现实时同步 简述 rsync (remote synchronize) 是一个远程数据同步工具,可通过网络快速同步多台主机间的文件. 基于 rsync算法 rsync的基本特点: 1,可以镜像保存整个目录树和文件系统: 2,较高的数据传输效率: 3,可以很容易做保持原来文件的属性.权限.时间.

linux之rsync远程数据同步备份

rsync服务是一种高效的远程数据备份的工具,该服务的port号为873, 是Liunx下的一种非独立服务.由xinetd超级服务管理,取代监听873port. 长处: 1.rsync能够利用ssh和ssl远程控制进行连接远程主机进行备份.依赖sshd服务 2,能够实现增量备份,在第一次建立连接时进行完整备份,以后仅仅同步变化的数据 3.能够使用自己的socket来进行同步.能够在服务端设置password限制訪问. 缺点:不能进行实时同步,须要安装lsyncd工具来辅助进行实时同步. 配置步骤

sersync+rsync实现实时同步备份

第一个里程:下载安装sersync软件 先进行软件下载,把软件包上传到系统中 unzip sersync_installdir_64bit.zip cd sersync_installdir_64bit mv sersync /usr/local/ tree 第二个里程:编写sersync配置文件 [[email protected] sersync]# cd /usr/local/sersync/conf/ [[email protected] conf]# ll 总用量 4 -rw-r--r

搭建中小规模集群之rsync数据同步备份

NFS重要问题 1.有关NFS客户端普通用户写NFS的问题. 1)为什么要普通用户写NFS. 2)exports加all_squash. Rsync介绍 什么是Rsync? Rsync是一款开源的.快速的.多功能的.可实现全量即增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix.linux.windows等多种操作系统平台. Rsync简介 Rsync英文全称Remote synchronization.从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快

使用rsync实现服务器数据同步备份

使用rsync实现数据实时同步备份 实验目标 rsync 远程同步 实战1: 备份/var/www/html 目彔 实战2: 使用ssh密钥实现无交互备份 实战3: 配置rsync 服务器及需要备份的目彔,不使用系统用户 实战4: 配置rsync+inotify实时同步 实战5: 防止网页被篡改 实验概述 软件简介 Rsync ( Remote sync)是一个远程数据同步工具,使用与unix/Linux/windows等多种平台.  可通过LAN/WAN 快速同步多台主机间的文件.Rsync

sersync2+rsync目录文件实时同步备份

说明: 192.168.1.2(sersync+rsync)---------------FTP 192.168.1.3(rsync)--------------------------backup 实验目的: 实时自动同步:192.168.1.2 ------->192.168.1.3到目录:/data/ftpdata ; 764  viconfxml.xml 765  ./GNU-Linux-x86/sersync2 -d -r confxml.xml 767  ./GNU-Linux-x8