很多站长朋友们都不太清楚php执行rsync,今天小编就来给大家整理php执行rsync,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHPStorm同步多个服务器 2、 如何通过rsync+sersync 实现同步备份 3、 4-10.8 Linux 中的文件同步传输 --- rsync --delete 接收端镜像形式备份源数据 4、 如何手动升级ownCloud到7.0.1 5、 rsync的几种优化应用方案 PHPStorm同步多个服务器PHPStorm没这个能力, 但你毕竟是个程序员
两个方案:
PHPStorm同步到单台服务器, 然后该服务器用inotify + rsync 同步到其他服务器.
phpstorm -> 中间服务器 -> (目标服务器1, 2, ,3, 4, 5)
PHPstorm设置FileWatch 然后触发本地脚本自行上传到多个服务器. 比如用PHP写个ftp上传脚本, 参数是文件路径.
如何通过rsync+sersync 实现同步备份如何通过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,通过sersync把文件推送到B服务器上
三:开始搭建
从B服务器开始:
1.关闭selinux,在/etc/sysconfig/selinux 这个文件,设置SELINUX=disable
2.防火墙开通873端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
3.开始安装rsync
yum install rsync -y
4.配置rsync,rsync的配置文件是/etc/rsyncd.conf,配置如下:
图下方需要注意的地方:secrets file这个是配置同步的密码文件的。[rsynctest]这个是配置同步模块的名称,path是配置同步的目录,hosts allow是允许同步的主机,hosts deny:拒绝同步的主机
5.创建同步的用户与密码的文件,即上图中的secrets file这个配置选项中的文件。/etc/rsync.passwd,同进要设置这个文件的权限为600
echo "user:password" >> /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
6.创建同步的目录:即上图中path配置选项中的目录。
mkdir /home/rsynctest
7.启动rsync
rsync --daemon --config=/etc/rsyncd.conf
接着重启一下xinetd
/etc/init.d/xinetd restart
8.配置开机启动 echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
到这样B服务器基本就配置完成了。
接着配置A服务器:
1.先到sersync官网下载sersync:
wget
2.安装sersync
# mkdir /usr/local/sersync
# mkdir /usr/local/sersync/conf
# mkdir /usr/local/sersync/bin
# mkdir /usr/local/sersync/log
# tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz
# cd GNU-Linux-x86/
# cp confxml.xml /usr/local/sersync/conf
# cp sersync2 /usr/local/sersync/bin
3.创建密码文件,同B服务器一样,不过这个文件只要保存一个密码就行了,不用用户名,权限也是600
echo "password" >> /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
4.配置sersync,配置文件就是上第二步复制的confxml.xml这个文中,路径在/usr/local/sersync/conf中
---------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
# 设置本地IP和端口
<host hostip="localhost" port="8008"></host>
# 开启DUBUG模式
<debug start="false"/>
# 开启xfs文件系统
<fileSystem xfs="false"/>
# 同步时忽略推送的文件(正则表达式),默认关闭
<filter start="false">
<exclude expression="(.*)\.svn"></exclude>
<exclude expression="(.*)\.gz"></exclude>
<exclude expression="^info/*"></exclude>
<exclude expression="^static/*"></exclude>
</filter>
<inotify>
# 设置要监控的事件
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
<sersync>
# 本地同步的目录路径
<localpath watch="/data">
# 远程IP和rsync模块名
<remote ip="192.168.1.20" name="data"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
# rsync指令参数
<commonParams params="-auvzP"/>
# rsync同步认证
<auth start="true" users="user" passwordfile="/etc/rsync.passwd"/>
# 设置rsync远程服务端口,远程非默认端口则需打开自定义
<userDefinedPort start="false" port="874"/><!-- port=874 -->
# 设置超时时间
<timeout start="true" time="100"/><!-- timeout=100 -->
# 设置rsync+ssh加密传输模式,默认关闭,开启需设置SSH加密证书
<ssh start="false"/>
</rsync>
# sersync传输失败日志脚本路径,每隔60会重新执行该脚本,执行完毕会自动清空。
<failLog path="/usr/local/sersync/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
# 设置rsync+crontab定时传输,默认关闭
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
# 设置sersync传输后调用name指定的插件脚本,默认关闭
<plugin start="false" name="command"/>
</sersync>
# 插件脚本范例
<plugin name="command">
<param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
<filter start="false">
<include expression="(.*)\.php"/>
<include expression="(.*)\.sh"/>
</filter>
</plugin>
# 插件脚本范例
<plugin name="socket">
<localpath watch="/opt/tongbu">
<deshost ip="192.168.138.20" port="8009"/>
</localpath>
</plugin>
<plugin name="refreshCDN">
<localpath watch="/data0/htdocs/cms.xoyo测试数据/site/">
<cdninfo domainname="ccms.chinacache测试数据" port="80" username="xxxx" passwd="xxxx"/>
<sendurl base=""/>
<regexurl regex="false" match="cms.xoyo测试数据/site([/a-zA-Z0-9]*).xoyo测试数据/images"/>
</localpath>
</plugin>
</head>
------------------------------------------------------------------------------------------------------------------
5.创建同步目录:mkdir /home/rsynctest
6.设置环境变量:
# echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile
# source /etc/profile
7.启动sersync
sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
注:重启操作如下:
# killall sersync2 sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
8.设置开机启动
# echo "sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml" >> /etc/rc.local
更多详情可以看这个里面的
4-10.8 Linux 中的文件同步传输 --- rsync --delete 接收端镜像形式备份源数据2、执行 rsync -a --delete 把 SRC 目录下的内容传输到 backups_delete 目录,backups_delete 以镜像形式保存 SRC 目录的内容。backups_delete 目录的内容和 SRC 目录的内容保持一致。
3、第 2 点通过 -a --delete 完成了 SRC 目录文件的备份,可能没有突显镜像备份的形式。现在 backups_delete 增加一些内容,然后用 -a --delete 再传输一次数据作一个对比就会清晰了。
backups_delete 目录下新增两个目录 directory1 和 directory2,directory1目录新增一个 file3.txt 文件,directory2目录新增一个 file4.txt 文件。操作 和 目录结构如下:
-a --delete 再传输一次数据,可以发现刚才新建的目录和文件都被删除了,backups_delete 目录只保存和 SRC 源目录一致的内容。形成一个 SRC 目录内容的镜像。
4、同理,把 backups_delete 的 file1.txt 文件删除,再用 -a --delete 再传输一次数据。
由上述实验可以看出 --delete 作用于接收端,把目标目标以镜像模式备份源目录的数据。目标目录比源目标多出的内容将会被删除。对比源目录,比源目录少的内容会补上。
如何手动升级ownCloud到7.0.1ownCloud是一款保持更新的开源私有云系统,基于PHP5开发的。支持SQLite、MySQL、Oracle以及PostgreSQL等数据库。本文介绍的是如何手动升级的步骤。
请务必遵循以下原则升级:
1、备份原文件夹;
2、停用所有第三方apps;
3、解压最新版的安装包,覆盖到原文件夹中;
4、确认所有的文件和文件夹权限是正确的;
5、打开ownCloud首页,升级自动进行。
假设将ownCloud安装在web根目录下的./ownCloud/文件夹中,SSH登录,进入web根目录后按照如下步骤进行升级:
1、使用rsync命令的存档模式备份./ownCloud/文件夹(该模式可以保留文件权限、拥有者、时间戳等信息),执行命令如下:
rsync -a owncloud/ owncloud_bkp`date +"%Y%m%d"`/
2、官网下载最新版ownCloud,执行命令如下:
wget
3、将最新版的压缩包解压到./owncloud_latest/文件夹,执行命令如下:
mkdir owncloud_latest
tar -C owncloud_latest -xjf owncloud-latest.tar.bz2
4、使用rsync命令覆盖./ownCloud/文件夹,执行命令如下:
rsync --inplace -rtv owncloud_latest/owncloud/ owncloud/
5、删除安装包(安全起见),执行命令如下:
rm -rf owncloud-latest.tar.bz2 owncloud_latest/
注意事项:
1、如果你已经上传了大量的数据,请在升级时确认硬盘空间是否足够;
2、在后台点击升级,只会下载最新版安装包到backup文件夹,并不会自动安装,同时会将config.php中的maintenance mode修改为true。
这就会导致一个错误提示“OwnCloud is in maintenance mode”,因此在手动升级后,需要将./owncloud/config/config.php中的maintenance mode从true改为false,再打开首页才能顺利升级;
3、升级到最新版的ownCloud后,经过我的测试(测试环境:CentOS6.4_x86, LAMP一键安装包),是可以很好的支持中文的(目录名和文件名皆可)。
rsync的几种优化应用方案rsync是用来做文件同步的一个很好的工具,传统的rsync就是使两个目录的文件保持一致,但随着文件数量增多,rsync会造成同步缓慢,系统负载比较高,直至系统死机。
为了解决文件增多导致rsync变慢的问题,方案是很多的。
1、使源目录保存较少文件
这是一个传统优化办法,因为rsync虽然是同步所有文件,但和同步最近更新的文件是一个道理,因此将源服务器上的目录删除,仅仅保持最近更新的文件,文件数量就变得不但很少,而且是稳定的,随着时间推移,这数量也不会涨得很快。但这样做有个缺点,就是rsync不能使用删除模式,如果有文件要删除,可以将其弄成空文件,假如有更严格要求,可以另一个程序来删除。
2、使用/dev/shm内存分区
在源目录保持较少文件的前提下,将文件不存在硬盘上而放入内存,就可以避免系统IO带来的问题,但是这个内存分区在系统reboot后会丢掉所有数据,虽然并不常常需要reboot,但是其中的风险也需要计算清楚。
3、使用推送方式
因为性能问题是出现在rsync的客户端,用生产服务器抓取源服务器的话,性能问题就会出现在生产服务器上,这当然不很妥当。假如在生产服务器上使用 rsync daemon,源服务器执行rsync命令将文件推送到生产服务器上,性能问题就转移到了源服务器上,这在一定程度可以保证生产服务器的稳定性。
4、仅用一台作同步比较
假如源服务器的文件要被同步到很多台生产服务器,那么会出现rsync并发。可以分析到这些生产服务器在同一时刻文件是一致的,因此每台机都和源服务器做一次比较就是浪费的。这时可以让源服务器和生产服务器同步一次,并且使用-v参数打印出log,其它生产服务器通过同步这个log记录的文件就可以避免数次比较过程。
5、使用inotify
inotify就不是rsync了,inotify是一个守护进程,它可以监控到文件目录下的文件变动情况,根据其输出然后用rsync做文件传输,就可以减掉文件比较这个环节。inotify使用并不复杂,对文件变更情况的监控是实时的,也不消耗很多性能。
6、双路同步
以上均是对rsync性能方面做优化,但是优化也会带来问题。在3、4、5号方案中,假如生产服务器有一台机器因为负载或其它问题reboot了,在 reboot过程中同步就失败了,这部分失败的文件假如没有其它处理,就永远不会再同步到生产服务器上。这时可以使用多一路rsync来处理,譬如使用 inotify,做到了实时同步,然后再每小时进行一次完整的rsync同步。这样就可以保证有很高的同步速度,又能使丢失文件的风险控制在一小时之内。
关于php执行rsync的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php执行rsync php执行sql文件的详细内容...