该文本记录怎么用rsync来备份系统,系统备份有整体部分和局部备份等分别,因为实验室需要备份的数据总体来说不是很大,所以我们可以用整体备份的方法来备份整个系统,这样当系统挂了之后,可以把备份的系统拷到服务器,迅速的恢复设备。
当然系统目录下的/proci和/sys目录是不需要备份的,因为它是系统运行是运行在系统内存上的一些记录,没有记录的必要,其他目录如/dev也是备份不备份看你需要了,通常这个目录不是很大,所以我决定采用除了/proc和/sys目录之外,其它统一进行备份的方法。
首先配置服务器端:(需要备份的系统)
1,安装rsync (系统安装很简单)
2,配置/etc/rsync.conf
uid = root
gid = root
use chroot = no
read only = yes
max connections = 4
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsyncd.secrets
auth user = root
list = yes
ignore errors
[grape]
path = /home/gentoo/grapes
comment = "grape test"
hosts allow = 192.168.1.166
hosts deny = 0.0.0.0/0
[benchmark]
path = /home/gentoo/benchmark
comment = "benchmark"
hosts allow = 192.168.1.166
hosts deny = 0.0.0.0/0
上面是我测试用的配置,grape和benchmark是我定义的两个模块名,也就是你要拷贝的目录。认证用户名是root,密码在/etc/rsyncd.secrets里面保存,这里的用户名和密码是你在客户端里面当同步复制的时候,需要认证的用户名密码,这两个可以随便设置,
#cat /etc/rsycnd.secrets
root:nopasswd
#/etc/init.d/rsycnd start
#rsync --daemon
这样,服务器配置好了,下面就说说客户端。
客户端就只需要写个脚本就ok了,网上有好多,下面贴出我根据网上的脚本进行修改后能正常运行并且测试过的代码:
-----------------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
unset verb progress
for i in $*; do
[ "$i" = "verb" ] && verb=v
[ "$i" = "progress" ] && progress="--progress"
done
RSYNC_SERVER=192.168.1.208 #rsync server IP
AUTH_USER=root #认证用户,与服务器一致
BAKROOT=/home/rainbow/testbackup #备份到客户端的目录
INC_DIR=increment #每次进行变化的文件记录
NOW=`date +%Y-%m-%d_%H:%M`
[ ! -e $BAKROOT ] && mkdir -p $BAKROOT
PASSWD_FILE=$BAKROOT/passwd #passwd里面是认证用户密码,直接写入密码就可以,我的文件里面就一句,nopasswd
PASSWD_PERM=`ls -l $PASSWD_FILE|awk '{print $1}'`
if [ "$PASSWD_PERM" != "-rw-------" ]; then
echo -e "/nWARNING: permission of passwd file changed to 0600 /n";
chmod 0600 $PASSWD_FILE
fi
LOGFILE=$BAKROOT/backup.log
EXCLUDES=$BAKROOT/exclude_file #这里面写你不需要同步目录,每行一个记录,内容可以如右:/tmp,或者模块下的某个目录
#如scripts,也能支持通配符。
[ ! -e $EXCLUDES ] && touch $EXCLUDES
BACKUP_MODULES="grape benchmark" #服务器上的模块名字
#echo $BACKUP_MODULES
OPTIONS="--force --ignore-errors --delete --delete-excluded /
--exclude-from=$EXCLUDES $progress /
--password-file=$PASSWD_FILE --backup"
rm -f $BAKROOT/log.*
log_id=0
for bakdir in $BACKUP_MODULES; do
log_id=`expr $log_id + 1`
SUBOPTS="--backup-dir=$BAKROOT/$INC_DIR/$bakdir/$NOW -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.*
---------------------------------------------------------------------------------------------------------------------------------------
#cat exclude_file
scripts
这里就是把grape模块里面的scripts目录同步。
#chmod 755 rsync.sh #上面脚本名字
#./rsync.sh 或者./rsync.sh verb progress #后者可以看到进度
这样,就可以备份了