php 调用 rsync,使用rsync同步文件的方法

背景

1. 在开发机上远程开发,svn提交代码

2. 开发过程中,需要同步代码到测试机上进行测试。测试机出于安全考虑,不允许连接svn。

我之前是直接使用scp批量同步所有文件到测试机,现在安全策略收紧,不允许使用scp了。

咨询了运维,可以搭建rsync来进行机器间的文件同步。

这里假设有两台机器:开发机10.0.0.1和测试机10.0.0.2。

1. 在两台机器上搭建rsync。

tar -zvf rsync-3.1.2.tar.gz

cd rsync-3.1.2

./configure --prefix=/usr/local/rsync

make

make install

下面的配置文件只需要在测试机上添加。

/etc/rsyncd.conf 指定rsync的配置

#以什么身份运行rsync

uid = root

gid = root

use chroot = no

#同时连接的最大连接数,0则不限制

max connections=0

#日志格式%h远端的主机名,%o操作类型,send/recv,%f文件名,%l文件长度,单位byte,%b真实传输的字节数

log format = %h %o %f %l %b

log file=/var/log/rsyncd.log

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

#模块名

[test]

#同步的文件目录

path = /data/web/test

#欢迎信息

comment = rsync from other

#只读

read only = no

#允许拉取文件列表

list = on

#secrets file中的用户名

auth users = rsyncuser

#密码文件位置

secrets file = /etc/rsync.pas

/etc/rsync.pas为允许访问的用户密码列表

rsyncuser:123456

这里记得添加完rsync.pas文件后,修改下文件属性。

chmod 600 /etc/rsync.pas

启动测试机上的rsync进程。

kill -9 $(pidof rsync)

rm -f /var/run/rsyncd.pid

/usr/bin/rsync --port=8730 --address=10.0.0.2 --daemon

2. 在开发机上同步文件

执行同步命令。

rsync -azv --delete --port=8730 /data/image/v2.0.2/ rsyncuser@10.0.0.2::test

输入密码,然后就能看到同步的文件列表了。

这里我们同步的时候,需要把.svn、.swp等其他隐藏目录文件排除掉的。

新建文件exclude.list文件,里面每一行一个需要排除的文件。

.*

同时我们也不想每次输入密码,新建文件rsync_client.pas,内容为同步用户的密码,注意这个为明文。

123456

修改rsync_client.pas文件权限和属主,这里需要把属主改为执行同步的用户,否则会报权限不足的错误。

chown dondon:users rsync_client.pas

chmod 600 rsync_client.pas

执行同步命令。

/usr/local/rsync/bin/rsync -azv --delete --port=8730 /data/image/v2.0.2/ rsyncuser@10.0.0.2::test --exclude-from=/usr/local/rsync/exclude.list --password-file=/usr/local/rsync/rsync_client.pas

之前使用scp同步文件,有一个缺点,svn里删除的文件,测试机上是不会删除的。

但是rsync就可以同步所有文件的状态,包括已删除的。

这里建议把重启rsync和同步文件的命令写成shell,添加到alias里,这样每次就不需要写这么长的命令了。

abc:~/image/v2.0.2> syncfile ./

sending incremental file list

deleting test.txt

./

web/index.php

sent 23519 bytes received 238 bytes 47514.00 bytes/sec

total size is 5923997 speedup is 249.36

(资源库 www.zyku.net)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值