rsync文件同步

场景:主要是用来发布文件。

一、rsync服务器端架设

1、安装

wget https://download.samba.org/pub/rsync/src/rsync-3.0.6.tar.gz
tar -zxvf rsync-3.0.6.tar.gz
./configure --prefix=/usr/local/rsync
make
make install
2、配置  

2.1、配置rsyncd.conf 不存在就手动创建 touch /usr/local/rsync/rsyncd.conf

配置内容如下:

uid = root

gid = root

use chroot = yes

strict modes = false

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

####

log file = /var/log/rsyncd.log

transfer logging = true

log format= "%o [%a] %m (%u) %f %l %b %c"

##

reverse lookup = no

ignore errors = true

read only = false

#hosts allow = 10.9.53.148

#hosts deny = 0.0.0.0/0.0.0.0

strict modes = yes

list = false

max connections = 100

timeout = 1800

[root]

path = /usr/swpro/

auth users = root

secrets file = /usr/local/rsync/rsyncd.secrets
2.2、配置rsyncd.secrets 不存在就手动创建 touch /usr/local/rsync/rsyncd.secrets

配置内容:

root:123456789
注意:此文件权限必须设置:600 命令如下

chmod 600 /usr/local/rsync/rsyncd.secrets
2.3、配置rsyncd.motd 不存在就手动创建 touch /usr/local/rsync/rsyncd.motd 该步骤可以省略
配置内容:
welcome use rsync service

2.4、启动rsyncd

查看rsyncd进程 命令如下:

ps aux | grep rsyncd
启动命令如下:

/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
2.5、配置rsync开机启动

vi /etc/rc.local
在末尾加上 /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf

然后保存即可。

二、client端安装跟配置

安装rsync

yum -y install rsync
客户端建立密码文件
vi /etc/rsyncd.passwd 没有的话就自己创建
将其修改成12345678

注意:1、这里的密码,与服务端设置的密码相同,就是通过这个密码连接服务端的
     2、然后切记修改改密码文件的权限(密码文件权限属性要设得只有属主可读)
修改命令如下:

chmod 600 /etc/rsyncd.passwd
三、同步文件

rsync -avz root@10.9.53.156::root /usr/swpro/ --password-file=/usr/local/rsync/rsyncd.passwd

这个命令是把服务器10.9.53.156文件同步到文件本机上

rsync -avzP /usr/swpro/ root@10.9.53.156::root/ --password-file=/usr/local/rsync/rsyncd.passwd

rsync -avzP --delete /usr/swpro/ root@10.9.53.156::root/ --password-file=/usr/local/rsync/rsyncd.passwd

这个命令是把本地文件同步更加到10.9.53.156服务器上

rsync -avz root@10.9.53.156::root/dps /usr/swpro/dps/ --password-file=/usr/local/rsync/rsyncd.passwd 复制某个文件夹

rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,它使用“rsync算法”,只传送两个文件的不同部分,速度快且传输效率高,还能保留文件原有的权限、时间等信息 [^1]。 ### 安装 大多数的Linux发行版都会带有rsync,如果没有,可以使用包管理系统安装。在Debian/Ubuntu中,安装命令如下: ```bash sudo aptitude -y install rsync ``` ### 使用方法及参数解释 以下是一个使用rsync复制本地目录到远程服务器的命令示例: ```bash rsync -az --progress --size-only /home/kevin/source/* server.example.com:/home/kevin/destination/ ``` 参数解释: - `-r`:递归同步目录及其子目录 [^3]。 - `-a`:归档模式,保留所有的属性,比如拥有者,时间戳等 [^3]。 - `-z`:压缩,减少带宽但会加大CPU负担,用于慢/贵的连接中 [^3]。 - `--progress`:显示文件同步的进程 [^3]。 - `--size-only`:根据大小比较文件,而不是根据hash值(较少CPU,更快) [^3]。 - `--stats`:打印文件传输的统计值,比如速度 [^3]。 ### 示例代码 以下是一个使用Python调用rsync进行同步的示例代码: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- import pexpect import time import traceback def doRsync(user, passwd, ip, srcDir, dstDir, timeout=3600): cmd = "rsync -azPq --delete {srcDir} {rUser}@{rHost}:{dstDir}".format( rUser=user, rHost=ip, srcDir=srcDir, dstDir=dstDir ) try: ssh = pexpect.spawn(cmd, timeout=timeout) print(cmd) i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5) if i == 0: ssh.sendline(passwd) elif i == 1: ssh.sendline('yes') ssh.expect('password: ') ssh.sendline(passwd) ssh.read() ssh.close() except: #print traceback.format_exc() pass if __name__ == '__main__': doRsync("root", "123456", "192.168.1.101", "/tmp/rtest1", "/tmp") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值