以下是小编收集整理的rsync同步之include与exclude实现精确同步linux操作系统,本文共4篇,希望对大家有所帮助。
篇1:rsync同步之include与exclude实现精确同步linux操作系统
在rsync同步文件时我们同步时肯定有需数据是不需要同步过来的,把我们可以合作include与exclude实现精确同步,下面我来给大家介绍一下,
说明:
有一个目录/var/www/test/public/下面,有很多文件、目录,但我只需要同步其中的2个目录(js,css)。用exclude将其它的文件,目录排除当然是可以的,但因为其它文件,目录非常多,在exclude中排除明显太费时;或2行rsync直接同步/var/www/test/public/js,/var/www/test/public/css也是可以的。
类似rsync -nrv /var/www/feibo/fbtime_in/public/js /tmp/test/public这样,写2行
但如果我只想要1行rsync同步/var/www/test/public目录呢。这里,我就需要先include-from指定需要同步的文件或目录,exclude将/var/www/test/public所有文件、目录排除掉
实现:
1.编写/root/shell/test.include文件
代码如下复制代码# cat /root/shell/test.include
js
css
2.rsync同步指定文件,目录
代码如下复制代码# rsync -nrv --include-from=/root/shell/test.include --exclude=/* /var/www/test/public/ /tmp/test/public
-n, --dry-run perform. a trial run with no changes made //干跑,光显示哪些文件目录会被rsync而不运行,用于测试非常方便
-r, --recursive recurse into directories //详细模式输出
-v, --verbose increase verbosity //对子目录以递归模式处理
参照网上写的,rsync -nrv --include-from=/root/shell/test.include --exclude=* /var/www/test/public/ /tmp/test/public,发现任何文件都没有同步。原来--exlucde=*是不行的,需要指定--exclude=/*。估计意思是指当前目录/var/www/test/public/下的所有文件目录。--exclude=*/则是指定当前目录/var/www/test/public/下的所有目录。
这里要注意/var/www/test/public/需要添加最后的/
附录:
附录1.执行的结果,可以看到只有js,css目录被rsync
代码如下复制代码sending incremental file list
css/animate.css
css/b
css/global.css
css/global.css_bak
js/a
js/feibo.js
js/feibo.js_bak
js/global.js
js/global.js_bak
js/jquery-1.7.2.min.js
js/jquery-1.8.0.min.js
js/json2.min.js
js/swfupload.js
js/swfupload.swf
js/swfupload_fp9.swf
js/swfuploadhandlers.js
js/WdatePicker/WdatePicker.js
js/WdatePicker/calendar.js
js/WdatePicker/lang/en.js
js/WdatePicker/lang/zh-cn.js
js/WdatePicker/lang/zh-tw.js
js/WdatePicker/skin/WdatePicker.css
js/WdatePicker/skin/datePicker.gif
js/WdatePicker/skin/default/datepicker.css
js/WdatePicker/skin/default/img.gif
js/WdatePicker/skin/whyGreen/bg.jpg
js/WdatePicker/skin/whyGreen/datepicker.css
js/WdatePicker/skin/whyGreen/img.gif
js/zero/ZeroClipboard.as
js/zero/ZeroClipboard.fla
js/zero/ZeroClipboard.js
js/zero/ZeroClipboard.swf
js/zero/ZeroClipboard10.as
js/zero/ZeroClipboard10.fla
js/zero/ZeroClipboard10.swf
sent 1045 bytes received 126 bytes 2342.00 bytes/sec
total size is 947225 speedup is 808.90 (DRY RUN)
篇2:linux中rsync异步服务器实现文件同步与备份linux操作系统
rsync是一个非常好用的文件同步软件它可以实现不同服务器之间文件实时备份功能,它比起我们常用的ftp要强大的多了,rsync可以实现文件有更新或有新文件就会自动备份到指定机器中去哦,下面我来给大家介绍一个例子,
Rsync 非常适合在两台机器之间快速同步大型、复杂的目录,例如论坛的附件目录。再配合 ssh ,则安全性也有保证,且可以利用 ssh public key 和 cron 来进行自动定时同步。
说明:两台机器分别为 localhost 和 remotehost ;用户分别为 localuser 和 remoteuser。
环境:FreeBSD 4.9 和 FreeBSD 6.1
代码如下复制代码设置 ssh public key 认证
$ssh-keygen -t dsa -b 2048
生成所需的密钥
$scp /home/localuser/.ssh/id_dsa.pub remoteuser@remotehost:/home/remoteuser/.ssh/localuser_id_dsa.pub
将公钥拷贝至 remotehost
$ssh remoteuser@remotehost
登录到?端
代码如下复制代码$cd .ssh/ ; cat localuser_id_dsa.pub >>authorized_keys至此,设置 ssh 认证完毕。
设置 rsync
确认两端机器都安装 rsync , freeBSD 有 ports ,安装非常方便,
写个脚本名为 backup.sh ,内容如下:
代码如下复制代码#!/bin/shRSYNC=/usr/local/bin/rsync
SSH=/usr/bin/ssh
KEY=/home/localuser/.ssh /id_rsa
RUSER=remoteuser
RHOST=remotehost
RPATH=/remote/dir
LPATH=/this/dir
$RSYNC -az—delte -e “$SSH -i $KEY” $RUSER@$RHOST:$RPATH $LPATH
-a 选项相当于选项 -rlptgoD 。简单来讲,此选项可递归并将几乎所有的东西同步过去,非常有用。注意的是, -a 默认不会保存 hardlinks ,不过可以单独用 -H 选项来实现。
-z 选项在传输中压缩文件,这无疑加快同步速度。
-delete 选项会删除接受方一些不应存在的文件,此文件在发送方已经被删除,这将保持目录完全同步。
让 cron 每天凌晨1点来跑这个脚本
代码如下复制代码$crontab -e0 1 * * * /home/localuser/bin/backup.sh
友情提示
rsync是没有自动启动同步功能了,如果我们要定时去备份一个网站数据我们就需要用到定时功能了,上面的例子来使用到了linux中$crontab命令来定时执行备份数据脚本了哦。
篇3:linux下使用rsync实现文件目录同步linux操作系统
rsync是一款很不错的文件同步工作,他不但可以实现windows机器之间的文件同步还可以实现不同操作系统工程之的文件同步,下面我来介绍在linux中rsync实现文件同步技巧,
实现目标:
服务器A与服务器B同步备份,这里只说明服务器A同步到服务器B,服务器B还原到服务器A。
考虑安全因素,使用普通用户进行同步。
使用cronjob,定时同步。
A 服务器上/opt/web 目录,与B客户端服务器上/opt/web目录实现同步。即:B主动与A进行同步。(A的文件会同步到B机器上)
代码如下复制代码OS: Reaht AS4A Server 192.168.0.100 /opt/web
B Server 192.168.0.60 /opt/web
一. A Server config
1.安装服务
代码如下复制代码yum install xinetdyum install rsync
2. vi /etc/xinetd.d/rsync 修改 disable =yes 为 disable =no ,修改后的文件如下
代码如下复制代码# default: off
# description: The rsync server is a good addition to an ftp server, as it
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = stream
wait = no
user = backup
server = /usr/bin/rsync
server_args = –daemon
log_on_failure += USERID
}
3. 编辑主要配置文件/etc/rsyncd.conf (不存在则自己创建)
代码如下复制代码vi /etc/rsyncd.confuid = backup
gid = backup
use chroot = no # 不使用chroot
max connections = 4 # 最大连接数为4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log # 日志记录文件
[web] # 这里是认证的模块名,在client端需要指定
path = /opt/web # 需要做镜像的目录
ignore errors # 可以忽略一些无关的IO错误
read nly = true # 只读
list = false # 不允许列文件
hosts allow = 192.168.0.0 # 允许的IP地址
hosts deny = 0.0.0.0/32 # 禁止的IP 地址
auth users = backup # 认证的用户名,如果没有这行,则表明是匿名
secrets file = /etc/backup.pass #认证用户的密码文件 认证文件名
4. 编辑服务器的密码文件 /etc/backup.pass,文件只能有可读权限 400
代码如下复制代码vi /etc/backup.pass #文件格式如下backup:123456
chmod 400 /etc/backup.pass
5.启动服务
首次启动rsync
代码如下复制代码rsync –daemon –config=/etc/rsyncd.conf如果提示
代码如下复制代码failed to create pid file /var/run/rsyncd.pid: File exists使用指令
代码如下复制代码rm -rf /var/run/rsyncd.pid用以下命令查看rsync是否已经运行:netstat -an|grep 873
代码如下复制代码[root@localhost web]# netstat -an|grep 873tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
tcp 0 0 :::873 :::* LISTEN
重启已经在运行的rsync
代码如下复制代码[root@mail video]# ps -ef | grep rsyncroot 27284 1 0 10:26 ? 00:00:00 rsync –daemon –config=/etc/rsyncd.conf
root 30516 29986 0 18:35 pts/3 00:00:00 grep rsync
[root@mail video]# kill -9 27284
[root@mail video]# rsync –daemon –config=/etc/rsyncd.conf
service xinetd restart,重启 xinted 服务
rsync 系统自带, 需要使用 –deamon 方式进行启动,服务端口是 TCP 873
rsync –deamon –config=/etc/rsyncd.conf
如果要在启动时把服务起来,有几种不同的方法,比如:
a、加入inetd.conf
编辑/etc/services,加入rsync 873/tcp,指定rsync的服务端口是873
编加/etc/inetd.conf,加入rsync stream tcp nowait backup /bin/rsync rsync –daemon
b、加入rc.local
在各种操作系统中,rc文件存放位置不尽相同,可以修改使系统启动时rsync –daemon加载进去,
二. B Server config
1. yum install rsync 安装rsync服务
2. 创建rsync连接时的密码文件/etc/rsync_client.pass,所放目录自己随意安排,文件权限为只读400
vi /etc/rsync_client.pass #文件格式如下:
#只需要配置连接时使用的密码即可,必须与A服务器上定义的密码相同.
代码如下复制代码chmod 400 /etc/rsync_client.pass3. 使用 rsync 命令连接服务器,实现文件同步
代码如下复制代码rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass backup@192.168.0.100::web /opt/webPS:目录同步时要保存相同的文件属主信息,需要在B服务器上创建相同的用户
代码如下复制代码rsync -qcazrtopgl –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.gz” –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/webbackup为认证用户名;
192.168.0.100为服务器端IP;
Web为模块名;
/opt/web 为本地的目录
三.定时任务
代码如下复制代码[root@localhost admin_backups]# vi backup.sh内容如下:
代码如下复制代码#/bin/shrsync -qcazrtopgl –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.gz” –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/web
添加定时任务:
代码如下复制代码[root@localhost admin_backups]# crontab –e添加以下内容:
代码如下复制代码*/1 * * * * /home/admin/admin_backups/backup.sh >/dev/null 2>&1每个一分钟从服务器A同步到服务器B!
4. 使用 –execlude= 排除不需要同步的文件后缀名
代码如下复制代码rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.tmp”backup@192.168.0.100::web /opt/web
5. 使用 –execlude-from= 排除不需要同步的目录
代码如下复制代码[root@localhost opt]# rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/web/opt/pcdir 文件的内容如下
cat /opt/pcdir
temp/
参数说明
-vzrtopg里的
v是verbose,
z是压缩,
r是recursive,
topg都是保持文件原有属性如属主、时间的参数
—-progress
是指显示出详细的进度情况
–delete
是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
–exclude=”*.tmp” 不包含某些文件
–execlude-from= 排除不需要同步的目录
/opt/web/
指定CLIENT端存放镜象目的路径
篇4:rsync实现linux文件同步到windows配置详解linux操作系统
本文章来给大家介绍关于rsync实现linux文件同步到windows配置详解,希望此方法对各位同学会有所帮助呀,
说明:
本篇文章实现linux定时将www,msyql,svn目录rsync到win2003指定目录上。
win2003安装CWRsync,做为rsync的server端,运行CWRsync守护进程daemon,接受linux同步过来的文件;
linux为centos,本身就有rsync,按时rsync文件到win上。
环境:
win2003 192.168.1.2 CWRsync rsyncd服务端,以daemon守护进程运行
linux 192.168.1.3 rsync客户端
实现:
1.win2003安装CWRsync及防火墙设置
请参照:CWRsync图文安装
2.修改CWRsync配置文件rsyncd.conf(CWRsync安装目录下,我这里的安装目录是:D:CWRsync)
代码如下复制代码uid = 0
gid = 0
use chroot = false
strict modes = false
hosts allow = 192.168.1.3
log file = rsyncd.log
# Module definitions
# Remember cygwin naming conventions : c:work becomes /cygwin/c/work
#
[www]
path = /cygdrive/e/bakup/1_3/www //CWRsync会自动将系统上所有的盘mount成/cygwin/x,因此/cygdrive/e/bakup/1_3/www指的是e:bakup1_3www目录
read nly = false
transfer logging = yes
auth users = rsyncd
secrets file = /cygdrive/D/CWRsync/rsyncd.secrets
[mysql]
path = /cygdrive/e/bakup/1_3/mysql
read nly = false
transfer logging = yes
auth users = rsyncd
secrets file = /cygdrive/D/CWRsync/rsyncd.secrets
[svn]
path = /cygdrive/e/bakup/1_3/
read nly = false
transfer logging = yes
auth users = rsyncd
secrets file = /cygdrive/D/CWRsync/rsyncd.secrets
3.添加CWRsync密码文件D:CWRsyncrsyncd.secrets
rsyncd:rsyncd //用户:密码
以上都是win2003的操作,下面是linux下的操作
4.添加rsync密码文件,这样linux定时rsync目录到win2003时就不需要输入密码
代码如下复制代码# cat /root/rsyncd.secretsrsyncd //直接输入密码
5.修改crontab,定时激发rsync同步
代码如下复制代码# crontab -e //添加以下内容
10 3 * * * rsync -vrlptD --progress --password-file=/root/rsyncd.secrets /home/www/data rsyncd@192.168.45.2::www
25 3 * * * rsync -vrlptD --progress --password-file=/root/rsyncd.secrets /home/mysql/data rsyncd@192.168.45.2::mysql
40 3 * * * rsync -vrlptD --progress --password-file=/root/rsyncd.secrets /home/svn rsyncd@192.168.45.2::svn
附录:
附录1.在linux端运行# rsync -avrtopg --progress --password-file=/root/rsyncd.secrets /home/www/data rsyncd@192.168.45.2::rsyncd会出现password file must not be other-accessible
continuing without password file
password:
问题password file must not be other-accessible已经回答了,保存密码的文件/root/rsyncd.secrets不应该被其它用户可读,
# chmod 600 /root/rsyncd.secrets //修改权限为600即可
★windows rsync两台服务器目录同步功能实现Windows服务器操作系统
★linux tar实现分卷压缩与还原数据方法 linux操作系统
文档为doc格式