手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:tag

资料:rsync

服务器同步,最简单的恐怕就是rsync了。如果是同一机房,如果是ubuntu,那就真的是灰常灰常简单啊。apt-get install rsync就over了。当然配置还是需要自己来的。
找的资料居然是百度百科的。好郁闷啊。不过。。。还是COPY一份了(话又说回来,现在百度百科在人肉整理+金钱攻势下,资料也真的是越来越完善了。只是不知道啥时候会把RFC也帮忙全部汉化一下吧。比如大家关心的tcp/ip,http协 议等,是不是也该整个汉化的版本之类的?【或许已经有了只是没有注意过罢了】)
原文:http://baike.baidu.com/view/1183189.htm
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:

  1. 可以镜像保存整个目录树和文件系统。
  2. 可以很容易做到保持原来文件的权限、时间、软硬链接等等。
  3. 无须特殊权限即可安装。
  4. 优化的流程,文件传输效率高。
  5. 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
  6. 支持匿名传输,以方便进行网站镜象。

软件下载
rysnc的主页地址为:http://rsync.samba.org/ ,目前最新版本为3.0.7。可以选择从原始网站下载:http://rsync.samba.org/ftp/rsync/。
安装
Ubuntu安装: sudo apt-get install rsync
RedHat: yum install rsync
编译安装
rsync的编译安装非常简单,只需要以下简单的几步:
[root@www rsync-2.4.6]# ./configure
[root@www rsync-2.4.6]# make
[root@www rsync-2.4.6]# make install
但是需要注意的是必须在服务器A和B上都安装rsync,其中A服务器上是以服务器模式运行rsync,而B上则以客户端方式运行rsync。这样在web服务器A上运行rsync守护进程,在B上定时运行客户程序来备份web服务器A上需要备份的内容。
rsyncd.conf
rsync服务器的配置文件是rsyncd.conf.
以下是一个rsyncd.conf的样本:
# Distributed under the terms ofthe GNU General Public License v2
# Minimal configuration file for rsyncdaemon
# See rsync(1) and rsyncd.conf(5) man pagesfor help
# This line is required by the/etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
port = 873
uid = root
gid = root
use chroot = yes
read only = yes
max connections = 5
#This will give you a separate log file
#log file = /var/log/rsync.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[test]
path = /home/nemo
list=yes
ignore errors
auth users = root, nemo
secrets file = /etc/rsyncd/rsyncd.secrets
comment = linuxsir home
exclude = tmp/
各个参数具体含义参见man rsyncd.conf
服务器端启动:
usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
可能需要root权限运行.
/etc/rsyncd/rsyncd.conf 是你刚才编辑的rsyncd.conf的位置.
也可以在/etc/rc.d/rc.local里加入让系统自动启动等.
客户端同步:
rsync -参数 用户名@同步服务器的IP::rsyncd.conf中那个方括号里的内容 本地存放路径 如:
rsync -avzP nemo@192.168.10.1::nemo /backup
说明:
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;

扩展阅读: 
  1. http://chenzhuo.blog.51cto.com/150592/269530 rsync配置实例

现在,windows下面也有rsync客户端了。。。

Tags: rsync, linux

利用array_diff函数更新tag

先介绍一下array_diff函数

JavaScript代码
  1. array_diff -- 计算数组的差集   
  2. 说明   
  3. array array_diff ( array array1, array array2 [, array ...] )   
  4.   
  5.   
  6. array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。    
  7.   
  8. 注意: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。    
  9.   
  10. 注意: 注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0], $array2[0]); 检查更深的维度。    
  11.   
  12. ::::::本函数在 PHP 4.0.4 中是坏的! :::::   

在网站的实际应用中,我们可能会用到TAG(标签),对标签的更新可能也会经常遇到,当然添加了之后不修改另作别论。

比如,我们为一条新闻添加了如下标签:新闻,CGX,艳照门 (开个玩笑,呵呵),存入数据库后,应该是在tag表里存入类似于这样的数据 

XML/HTML代码
  1. id      newsid      tagname   
  2. 1       1       新闻   
  3. 2       1       CGX   
  4. 3       1       艳照门  

其中id是自增字段,newsid是新闻的ID,tagname是刚刚存入的标签(存的时候以逗号分隔)。

然而现实总是残酷的,XXX总局规定我们不得把“艳照门”作为关键字了,于是,我们不得不更新TAG(当然,直接从数据库里delete from table where tagname='艳照门'更方便,但这里我是在举例),于是新的TAG就可能变成了:新闻,CGX,其他图片。更新的时候,我们要从数据库里把“艳照门”去除掉,但怎么知道我把原来的标签“艳照门”删除了呢?这时候,array_diff就有用了。

PHP代码
  1. <?php   
  2. //隐藏字段:原始标签   
  3. $_POST['origin_tags'] = '新闻,CGX,艳照门';   
  4. //标签字段   
  5. $_POST['news_tags']   = '新闻,CGX,其他图片';   
  6.   
  7. $origin_tags = explode',', trim( $_POST['origin_tags'] ) );   
  8. $new_tags    = explode',', trim( $_POST['news_tags'] ) );   
  9.   
  10. $diff_tags  = array_diff$origin_tags , $new_tags );   
  11.   
  12. echo "<pre>";   
  13. print_r ( $diff_tags ) ;   
  14. echo "</pre>";   
  15.   
  16. ?>  

看,我们把“艳照门”打印出来了,于是,下一步我们就可以执行:DELETE FROM tablename WHERE news_id = 2 AND tagname = '艳照门';来删除这条记录,同时将新的数据插入数据库(新的数据判断重复可以采用array_intersect,使用方法与array_diff类似,这里就不提了,当然更方便的方法是把:$diff_tags = array_diff( $origin_tags , $new_tags ); 改为 $diff_tags = array_diff( $new_tags , $origin_tags );)

更新数据的方法有很多种,我在这里只是提出一个解决方案。希望大家能够给出其他更好的建议。

Tags: php, tag