增量备份rsync.docx
- 文档编号:27350069
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:22
- 大小:190.45KB
增量备份rsync.docx
《增量备份rsync.docx》由会员分享,可在线阅读,更多相关《增量备份rsync.docx(22页珍藏版)》请在冰豆网上搜索。
增量备份rsync
备份是写代码的人必不可少的一项工作,传统的备份,一般就是copy所有数据到一个地方,然后贴上标签,表示是什么时候备份的,这种备份被称之为“整体备份”。
如果经常进行整体备份,对磁盘的空间占用需求就很大,尤其当你备份大容量的数据的时候,有时候,比如一个星期,只对其中一小部分的内容进行了修改,但是还是需要全部重新备份一次,很显然,太浪费磁盘空间了;此时增量备份就派上用场了,增量备份,又叫做差异备份,意如其名,只备份修改过的部分。
好了,废话说完了,来看看如何实际操作,我们用到的软件是大名鼎鼎的rsync,很多网站的镜像就是用它来完成的。
====================
环境介绍:
====================
备份服务器:
192.168.0.1
需要备份的目录:
/data和/home/work
备份时验证用户名和密码:
backup/secret
备份客户机(备份数据存放地):
192.168.0.11
客户机和服务器均需安装rsync软件包
====================
服务器端配置:
====================
创建/etc/rsyncd.conf主配置文件:
##fileof/etc/rsyncd.conf
motdfile=/var/rsync/welcome.msg
pidfile=/var/rsync/rsyncd.pid
lockfile=/var/rsync/rsync.lock
logfile=/var/rsync/rsyncd.log
###需要备份的模块
[data]
comment=ourdataforservice
path=/data
usechroot=no
maxconnections=4
readonly=true
list=false
uid=nobody
gid=nogroup
secretsfile=/etc/rsyncd.secrets
hostsallow=192.168.0.11
hostsdeny=0.0.0.0/0
ignoreerrors=yes
transferlogging=yes
logformat="%a%f%l"
authusers=backup
###需要备份的模块
[work]
comment=ourworkinformation
path=/home/work
usechroot=no
maxconnections=4
readonly=true
list=false
uid=nobody
gid=nogroup
secretsfile=/etc/rsyncd.secrets
hostsallow=192.168.0.11
hostsdeny=0.0.0.0/0
ignoreerrors=yes
transferlogging=yes
logformat="%a%f%l"
authusers=backup
上面定义了2个备份点,只允许192.168.0.11连接,需要验证的用户名为backup
然后创建密码文件,每一行格式为:
用户名:
密码,都是明文的
###fileof/etc/rsyncd.secrets
backup:
secret
创建日志或运行目录:
mkdir/var/rsync
好了,服务器端的工作完成了,只需要运行rsyn--daemon启动rsync服务即可
====================
客户端的配置
====================
客户端就不用创建什么配置文件了,可以直接运行命令来完成备份,但是为了方便操作,用脚本来完成似乎更理想。
备份要求:
所有的数据统一放到一个根目录下,主备份用每个备份点名字命名,增量备份目录为Increment,每个备份点的增量备份数据,全部放到这个目录下面,目录为当前日期,格式为2007-08-11_11-22
文件目录树如下:
/backup/备份根目录
|-------work/备份点1的主目录,这个目录里面的数据是备份完成后最新的
|-------data/备份点2的主目录,同上
`-------Increment/增量备份根目录
|
`-----work/备份点1的差异/修改备份数据
|
|---2007-08-11_10-22从最开始备份到08月11日10点22分,所修改的数据
`---2007-08-11_11-22从10点22分到11点22分,所修改过的数据
准备工作:
创建备份根目录:
mkdir/backup,其他的目录备份时会自动被创建
创建密码文件(这样可以不用手动输入密码):
echo"secret">/backup/passwd
下面就是备份的脚本了
#****************************************************
#Author:
Muddyboot-toobyddum@
#Lastmodified:
2007-08-1021:
39
#Filename:
rsync.sh
#Description:
backupfilesviarsyn
#****************************************************
###默认备份时没有任何输出
###如果需要看到备份的详细信息或备份进度,加上verb和progress
unsetverbprogress
foriin$*;do
["$i"="verb"]&&verb=v
["$i"="progress"]&&progress="--progress"
done
###备份服务器地址
RSYNC_SERVER=192.168.0.1
###备份时验证用户名
AUTH_USER=backup
###备份根目录
BAKROOT=/backup
[!
-e$BAKROOT]&&mkdir-p$BAKROOT
###密码文件
PASSWD_FILE=$BAKROOT/passwd
###检查密码文件的权限,因为是明文的,所以设为0600比较安全
PASSWD_PERM=`ls-l$PASSWD_FILE|awk'{print$1}'`
if["$PASSWD_PERM"!
="-rw-------"];then
echo-e"\nWARNING:
permissionofpasswdfilechangedto0600\n";
chmod0600$PASSWD_FILE
fi
###备份日志
LOGFILE=$BAKROOT/backup.log
###备份时需要排除的文件
EXCLUDES=$BAKROOT/exclude_file
[!
-e$EXCLUDES]&&touch$EXCLUDES
###备份点
BACKUP_MODULES="datawork"
###rsync的参数
OPTIONS="--force--ignore-errors--delete--delete-excluded\
--exclude-from=$EXCLUDES$progress\
--password-file=$PASSWD_FILE--backup"
###删除以前的临时日志文件
rm-f$BAKROOT/log.*
log_id=0
forbakdirin$BACKUP_MODULES;do
log_id=`expr$log_id1`
SUBOPTS="--backup-dir=$INC_DIR/$bakdir/$BAKTIME-az${verb}"
rsync$OPTIONS$SUBOPTS$AUTH_USER@$RSYNC_SERVER:
:
$bakdir\
$BAKROOT/$bakdir|tee$BAKROOT/log.$log_id
done
###合并临时日志到备份日志中
cat$BAKROOT/log.*>>$LOGFILE
rm-f$BAKROOT/log.*
#####endofrsync.sh
OK,脚本完成了,chmod755rsync.sh
开始备份:
./rsync.shverbprogress就可以了,备份时,会自动从密码文件读取密码进行验证,备份的详细信息及进度会在当前终端输出,同时也记录到backup.log文件中。
两次备份后,如果数据在这段时间内有改动,会产生差异备份数据,用当前时间命名,便于以后查找
如果有些数据你不想备份,可以加入到exclude_file文件中,每条记录占一行,支持通配符,比如
/tmp##排除名为tmp的根目录
.[a-z]*##不备份以点开头的隐藏文件
====================
rsync后记
====================
1.备份时若需要考虑到传输数据的安全,可以通过rsyncoverssh来完成,加入一个-essh参数即可,适用于远程备份机密数据的场合;内网备份或对数据安全没有什么要求,就不必了,通过ssh后备份速度会有所减慢。
2.备份参数中需要注意--delete参数,意为:
删除本地备份目录存在,但是远程备份服务器不存在的文件和目录,也就是说,如果备份点删除了某个文件,备份过后,备份目的地的该文件也将被删除。
还好有增量备份的存在,这个文件会移到增量备份目录中,如果没有增量备份,那么这个文件就永久被删除了。
3.暂时没了,以后想到了再补充
使用rsync备份和恢复文件脚本
Note:
Tousethefollowingscripts,youneedtoinstall:
*tcl,expect,ssh,rsynconlocalmachine
*ssh,rsynconremoteserver
andssh,rsynccommandsmustinbothsides'PATHenvironment.
Suggestedversions:
tcl:
8.4.15
expect:
5.43.0
rsync:
3.0.2
Howtoinstall:
tcl:
cdunix
./configure--prefix=/usr
make&&makeinstall
makeinstall-private-headers
ln-svtclsh8.4/usr/bin/tclsh
expect:
./configure--prefix=/usr--with-tcl=/usr/lib\
--with-tclinclude=/usr/include--with-x=no
make
makeSCRIPTS=""install
1.bak.shisusedforbackingupcontentsunder/mnttoremoteserver:
usage:
./bak.shremoteipdirectoryuserpassword
e.g.
./bak.sh192.168.22.110/cas_bakroot123456
changeSRCinthescriptifyouwanttobackupotherdirectory.
2.restore.shisusedforrestoringfilesback:
usage:
./restore.shremoteipdirectoryuserpassword
e.g.
./restore.sh192.168.22.110/cas_bakroot123456
changeDESTinthescriptifyouwanttorestoretootherdirectory.
RETURNVALUE:
100:
backup/restoresuccess
101:
Noroutetohost
102:
passwordincorrect
103:
connectionrefused
104:
incorrectcommandlinearguments
bak.sh
#!
/usr/bin/expect-f
setSRC/mnt/
settimeout5
procdo_ssh_login{hostdirusernamepass}{
globalSRC
setdone1
if{[stringindex$dirend]=="/"}{
setdir[stringtrimright$dir"/"]
}
if{[stringindex$SRCend]=="/"}{
spawnrsync-azP-essh$SRC$username@$host:
$dir
}else{
spawnrsync-azP-essh$SRC/$username@$host:
$dir
}
send_user"connectingto$host\n"
while{$done}{
expect{
"*Noroutetohost"{
send_user"Noroutetohost!
\n"
close
exit101
}
"*(yes/no)?
"{send"yes\n"}
"?
assword:
"{send"$pass\n"}
"*Permissiondenied*"{
send_user"passwordincorrect!
\n"
close
exit102
}
"*Connectionrefused*"{
send_user"connectionrefused!
\n"
close
exit103
}
"*speedupis*"{
send_user"backupcomplete!
\n"
close
exit100
}
}
}
}
if{$argc!
=4}{
putsstderr"Usage:
./bak.shhostdirusernamepassword\n"
exit104
}
sethost[lindex$argv0]
setdir[lindex$argv1]
setusername[lindex$argv2]
setpasswd[lindex$argv3]
do_ssh_login$host$dir$username$passwd
restore.sh
#!
/usr/bin/expect-f
setDEST/mnt
settimeout5
procdo_ssh_login{hostdirusernamepass}{
globalDEST
settimeout_case0
setdone1
if{[stringindex$dirend]!
="/"}{
spawnrsync-azP-essh$username@$host:
$dir/$DEST
}else{
spawnrsync-azP-essh$username@$host:
$dir$DEST
}
send_user"connectingto$host\n"
while{$done}{
expect{
"*Noroutetohost"{
send_user"Noroutetohost!
\n"
close
exit101
}
"*(yes/no)?
"{send"yes\n"}
"?
assword:
"{send"$pass\n"}
"*Permissiondenied*"{
send_user"passwordincorrect!
\n"
close
exit102
}
"*Connectionrefused*"{
send_user"connectionrefused!
\n"
close
exit103
}
"*speedupis*"{
send_user"restorecomplete!
\n"
close
exit100
}
}
}
}
if{$argc!
=4}{
putsstderr"Usage:
./restore.shhostdirusernamepassword\n"
exit104
}
sethost[lindex$argv0]
setdir[lindex$argv1]
setusername[lindex$argv2]
setpasswd[lindex$argv3]
do_ssh_login$host$dir$username$passwd
用Rsync备份Dreamhost 到Windows 上
10大城市2万个热门IT职位注册有奖
JAVAV工程师权威认证
广州中星报MCSE送CCNA3600元 oracle10Gocp证书班热招
热门招聘信息
数据库开发人员数据库工程师
ChinaItLab
Fenng
2007-6-11
保存本文
推荐给好友
收藏本页
欢迎进入Oracle社区论坛,与200万技术人员互动交流>>进入
因为这次Dreamhost的安全问题,不得不考虑调整站点备份的周期。
备份方式是利用cxRsync通过SSH通道备份数据到本地Windows上。
Rsync在Windows上的实现有好几个包装好的工具,比如DeltaCopy、Unison等。
经过比较还是觉得cxRsync最好用.
cwRsync的优点:
1)配置简单。
已经包装了crgwin库文件,下载安装就能直接调用命令进行同步。
2)命令行即可操作.与Unix上基本一样(DeltaCopy则是图形化的,Unison还需要熟悉后才可以)。
基本操作步骤:
1)下载,安装cwRsync.
2)(可选,Dreamhost的安全都这样糟了,还不如直接用密码登录安全呢,嘿)创建Key,进入命令行模式,调用ssh-keygen命令创建Key.公钥和私钥存储的位置就放在默认的位置即可。
完成后将公钥串存入~/.ssh/authorized_keys文件内。
3)进入命令行模式,调用rsync命令:
rsync --exclude="/home/foo/tmp/"-avzfoo@:
\
MySites\\
说明:
--exclude过滤掉一些无关紧要的目录,比如MT目录下的Cache信息等,foo和foobar请根据自己的情况做适当的替换。
最后,如果喜欢用Windows的任务调度的话,可以考虑调用。
反正我是从来不用的
用rsync从Linux到Windows远程备份
(1)
2007-07-0213:
19 佚名 ChinaITLab 我要评论()
∙摘要:
本文向大家介绍如何用rsync从Linux到Windows远程备份。
∙标签:
rsync Linux Windows 远程备份
∙
Oracle帮您准确洞察各个物流环节
rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remotesync。
rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。
rsync的最新版本可以从http:
//rsync.samba.org/rsync/获得。
它的特性如下:
1、可以镜像保存整个目录树和文件系统。
2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。
3、无须特殊权限即可安装。
4、优化的流程,文件传输效率高。
5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
本文介绍了如何使用rsync服务从Linux到Windows进行远程备份。
一、配置服务器端
首先我们需要配置rsync,打开配置文件/etc/xinetd.d/rsyncd.conf(如果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 增量 备份 rsync