博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync的应用实践详解
阅读量:5894 次
发布时间:2019-06-19

本文共 2971 字,大约阅读时间需要 9 分钟。

【背景】

rysnc的优点

1 可作为差异性传输   节省带宽和传输时间

2 可以作为服务运行 数据备份中心(运行在873端口)

3 作为服务的时候,rsyncd.conf的模块下的配置文件更改不需要要重启-daemon

[rsync的选项]

-a

-v 

-z  传输过程中进行压缩,如果传递的是文件,图片压缩前后文件大小有很大的差异就可以加上!

-P

-L, --copy-links            transform symlink into referent file/dir

-H --hard-links

--exclude=PATTERN       exclude files matching PATTERN

常用1

rsync -avz

常用2

rsync -zvH 

因为-a选项中没有保留硬连接所以需要-H参数

常用3

rsync -avH --delete-after --exclude='.~tmp~'

--delete-after 

默认情况下,rsync是先清理目的端的文件再开始数据同步;如果使用此选项,则rsync会先进行数据同步,都完成后再删除那些需要清理的文件。

参考:

案例一:  host1----> host2 ,两个主机之间不知道root密码,所以scp不方便,可以sudo到root但又不能更改root。此时两个主机之间copy就可以使用rsync了!  如果有定时任务copy rsync是最好的选择了。

host2 作为服务 运行,最简单的的/etc/rsyncd.conf 的配置文件编写

[root@log_server src]# cat /etc/rsyncd.conf 

1
2
3
4
5
[src]
path=/usr/local/src
read only = no
uid = root 
gid = root

作为服务运行rsync有两种方式

1: 独立运行

1
rsync 
--daemon

2: 寄托在xinetd服务下面

[cat /etc/xinetd.d/rsync | grep disa

        disable = no

/etc/init.d/xinetd start启动即可

rsync监听端口873

host1将本地/usr/local/src下的文件 传递到host2的src模块下(即/usr/local/src下)

1
rsync 
-avz  
/usr/local/src/php-5
.3.27.
tar
.gz 192.168.100.20::src

注意:

1 这个传输过程这是不需要任何密码的

2 uid gid指定为root是因为写在/usr/local/src下面是需要root权限的

3 read only =no是因为默认是只读

4 作用只是把文件copy过去,目标端有文件则起到覆盖的作用(即同步)

案例二: 和案例一样,只不过是要认证密码的(注意是虚拟账号(rsync中的账号认证),和系统账号不是同一个) 并且把一些默认的配置参数到详细的写上和写在全局中,非模块下面

cat /etc/rsyncd.conf 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
port = 873
uid =root
gid =root
user chroot = no
max connections = 20
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
 
[src]
path=/usr/local/src
ignore errors
read only = no
uid = root 
gid = root
auth users= root
secrets file = /etc/rsyncd.secrets

编写rsync的账号密码文件

1
2
cat 
/etc/rsyncd
.secrets
root:123456

更改权限(权限一定要是600)

1
chmod 
600 
/etc/rsyncd
.secrets

传输文件

[root@slave src]# rsync -avz  /usr/local/src/libmcrypt-2.5.8 root@192.168.100.20::src

Password: 

或者使用指定密码文件,而非交互式的进行文件传输

首先编辑一个密码文件(权限一定要是600 其他人不可读,才能生效)

1
cat 
/etc/rsyncd
.password

123456

1
chmod 
600 
/etc/rsyncd
.password

密令进行传输到host2

1
rsync 
-avz  --password-
file
=
/etc/rsyncd
.password 
/usr/local/src/libmcrypt-2
.5.8 root@192.168.100.20::src

[其他端口]

rsync -av --port=10873 vim/ dev-mon001::salt-base/vim

[排查目录/文件]

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-ctr001::salt-base/

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-db003::salt-base/

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-vctr001::salt-base/

rsync -avP --exclude-from=/data1/script/exclude.list --password-file=/etc/rsync.password_root --port=10873 /data1/salt/base/  www@xxx-mon001::salt-base/

注意:

1 如果rysnc --daemon的用xinted托管的话,如果改变监听的端口一定要改变 /etc/service中的rsync默认端口,否则是不生效的,无论你是写在 /etc/rsyncd.conf中或者其他地方

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1786217如需转载请自行联系原作者

cuizhiliang

你可能感兴趣的文章
通过script标签实现JSONP跨域调用
查看>>
用jQuery实现Ajax
查看>>
***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权
查看>>
上传图片预览
查看>>
python连接mysql
查看>>
首次公开!菜鸟弹性调度系统的架构设计
查看>>
vim编辑器
查看>>
批量启用lync用户-2
查看>>
CENTOS6.5 下docker安装和配置
查看>>
OAF_开发系列14_实现OAF代码动态新增控件
查看>>
程序设计的一些原理
查看>>
ORA-00600 [kddummy_blkchk]错误一例
查看>>
iTerm的安装以及配置
查看>>
Oracle Database 10g for Windows安装
查看>>
使用virt-install创建虚拟机(已测OK)
查看>>
explore my oracle support using firefox 3.6
查看>>
WordPress主循环(The Loop)函数have_posts(),the_post()详解
查看>>
一个循环改名的shell
查看>>
只有傻瓜才会成功
查看>>
java数组
查看>>