Linux NFS挂载,实现异地文件备份

Linux NFS挂载,实现异地文件备份,第1张

最近做了一个文件的异地备份,采用网络挂载的方式,效果比之前用sync拷贝要方便的多。

也比之前简单的多,其实也就是几件事情。

首先是,需要备份的服务器和备份的服务器都装上nfs。

yum install nfs-utils

有的可能还需要单独安装一下rpcbind

那就

yum install rpcbind

接着在被挂载服务器编写配置文件

vim  /etc/exports

/root/work 192.168.0.3(rw,no_root_squash,no_all_squash,async)

/root/work 192.168.0.16(rw,no_root_squash,no_all_squash,async)

如像这样,授权了本地的/root/work 目录可以被两个服务器访问,权限是读写(rw)

这一部分就完成了。

接下来是需要备份的服务器:

安装玩nfs以后,在/mnt目录下建一个目录(通常都是在这个目录下,别问为什么?问就是通用习惯。)

cd  /mnt

mkdir backserver

这就完成了目录创建

接着也是最重要的一步

mount -t nfs 192.168.0.18:root/work/backup /mnt/backserver/

这条命令的意思是挂载192.168.0.18:root/work/backup目录到本机的/mnt/backserver/

-t 是指定挂载类型,nfs,就是网络文件系统的简称。

这样之后,本机的/mnt/backserver/存的文件实际上是存在192.168.0.18:root/work/backup目录下的。

接下来就是一个见的文件拷贝命令。

rsync -avz /usr/local/nginx /usr/local/tomcat  /mnt/backserver/09back

就把文件备份到192.168.0.18:root/work/backup目录下了。

实现自动备份就更简单了,直接把刚才的命令写入shell脚本

保存为backup.sh

然后加入系统定时计划

crontab -e

30 3 * * * sh /root/work/work/backup.sh

意思是每天三点执行一次脚本,就完成了自动异地备份。

整个过程还是很简答的,其中涉及一个cs的模式。

需要知道:

1,是客户端挂载到服务端。

2,服务端需要授予客户端访问权限。

创建脚本/root/script/backup.sh

# 该脚本应用于10多台普通的Linux应用服务器,多年来从未出过差错。

# 数据库备份较为特殊,这里不包含数据库备份。

# 因为脚本中含有FTP密码,所以FTP仅给予写权限较为安全,FTP中的老备份的定期删除任务由FTP服务器完成。

# 备份加入到自动任务中,每周六23:00执行,并写入日志,如下:

# 追加下面语句到/etc/crontab中

# 0 23 * * 6 root /root/script/backup.sh >>/root/script/backup.log 2>&1

#有注释版:

#!/bin/bash

#=====================================================

#author zhaoyn

#date 2010/12/31

#=====================================================

#参数设定

basedir=/opt/backup #备份存放的目录

days=15 #备份在本地保留天数

bakfiles="/root/script /etc" #需要备份的目录或文件,请不要使用快捷方式或通配符

ftpip=XXX.XXX.XXX.XXX #异地备份的FTP地址

ftpuser='username' #异地备份的FTP用户名

ftppw='password' #异地备份的FTP密码

echo =====================================================

date

cd $basedir

#删除备份目录中15天以前备份文件,不包含子目录

find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \

for bakfile in $bakfiles

do

file=`basename $bakfile`

#压缩打包需要备份的目录,包括权限,文件命名包含当前时间

tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile

#大文件打包前后,缓解磁盘压力,降低I/O错误概率

sleep 10s syncsync

done

#通过FTP上传当天备份的文件到异地

ftp -v -n -i $ftpip <<END

user $ftpuser $ftppw

bin

mput *$(date +%Y%m%d)*.tgz

bye

END

#无注释版:

#!/bin/bash

#=====================================================

#author zhaoyn

#date 2010/12/31

#=====================================================

basedir=/opt/backup

days=15

bakfiles="/root/script /etc"

ftpip=XXX.XXX.XXX.XXX

ftpuser='username'

ftppw='password'

echo =====================================================

date

cd $basedir

find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \

for bakfile in $bakfiles

do

file=`basename $bakfile`

tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile

sleep 10s syncsync

done

ftp -v -n -i $ftpip <<END

user $ftpuser $ftppw

bin

mput *$(date +%Y%m%d)*.tgz

bye

END

Mysql的备份,如果凌晨可以停止几分钟,那么强烈建议对Mysql执行物理备份,脚本如下

#!/bin/bash

#History

#=====================================================

#When Who What

#2010/3/24 Zhaoyn Create

#

#=====================================================

basedir=/opt/backup

updir=$basedir/updir

timenow=$(date +%Y%m%d-%H%M)

# 删除mysql十四天前的数据,注意,这里仅删除了mysql的tgz文件。

rm -f `find $basedir -name "mysql*.tgz" -mtime +14`

# 由于数据库在有连接的情况下,直接对数据文件打包是可能出问题的,所以这里我们在打包前要停用数据库,这样直接对数据文件打包,恢复时只需解压数据文件到新环境相应的目录即可,默认是/var/lib/mysql

# 如果白天也要进行数据库备份,请使用mysqldump命令,进行在线备份。恢复也挺方便的。

/etc/rc.d/init.d/mysqld stop

sleep 5s syncsync

tar -czpf $basedir/mysql.$timenow.tgz /var/lib/mysql

/etc/rc.d/init.d/mysqld start

#=====================================================

附件中的脚本文件是有DOS换行符(CR/LF)的,复制文件中的内容到SSH客户端没有问题,如果直接拷贝文件到Linux系统中,可先运行下面的命令:

mv *.txt *sh

dos2unix *.sh

1.Linux下目录复制:本机->远程服务器scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 #test1为源目录,test2为目标目录,zhidao@192.168.0.1为远程服务器的用户名和ip地址。2.Linux下目录复制:远程服务器->本机scp -r zhidao@192.168.0.1:/home/test2 /home/shaoxiaohu/test1#zhidao@192.168.0.1为远程服务器的用户名和ip地址,test1为源目录,test2为目标目录。注:如果端口号有更改,需在scp 后输入:-P 端口号 (注意是大写,ssh的命令中 -p是小写)


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/521747.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-21
下一篇2023-06-21

发表评论

登录后才能评论

评论列表(0条)

    保存