欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

rsync同步之include与exclude实现精确同步linux操作系统

时间:2025-09-20 08:33:09 其他范文 收藏本文 下载本文

以下是小编收集整理的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/sh

RSYNC=/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 -e

0 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 AS4

A Server 192.168.0.100 /opt/web

B Server 192.168.0.60 /opt/web

一. A Server config

1.安装服务

代码如下复制代码yum install xinetd

yum 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.conf

uid = 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 873

tcp       0     0 0.0.0.0:873                0.0.0.0:*                  LISTEN

tcp       0     0 :::873                     :::*                       LISTEN

重启已经在运行的rsync

代码如下复制代码[root@mail video]# ps -ef | grep rsync

root    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.pass

3. 使用 rsync 命令连接服务器,实现文件同步

代码如下复制代码rsync -vzrtopg –progress –delete –password-file=/etc/rsync_client.pass backup@192.168.0.100::web /opt/web

PS:目录同步时要保存相同的文件属主信息,需要在B服务器上创建相同的用户

代码如下复制代码rsync -qcazrtopgl –progress –delete –password-file=/etc/rsync_client.pass –exclude=”*.gz” –exclude-from=/opt/pcdir backup@192.168.0.100::web /opt/web

backup为认证用户名;

192.168.0.100为服务器端IP;

Web为模块名;

/opt/web 为本地的目录

三.定时任务

代码如下复制代码[root@localhost admin_backups]# vi backup.sh

内容如下:

代码如下复制代码#/bin/sh

rsync -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.secrets

rsyncd //直接输入密码

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操作系统

《与风相识》同步练习题及答案

六年级上册语文《学与问》同步练习

小学五年级数学《因数与倍数》同步练习题

初二上册五单元同步作文:莲之泪

六年级语文《黄鹤楼送孟浩然之广陵》同步练习

《看云识天气》课堂同步练习题与参考答案

《rsync同步之include与exclude实现精确同步linux操作系统(共4篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

最新推荐
猜你喜欢
点击下载本文文档