如何在Linux服务器中备份
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Linux服务器中备份相关的知识,希望对你有一定的参考价值。
我有一个网站,是discuz+supesite的,挂在Linux系统的服务器下,我现在想完成整站备份(最好是远程的,把文件和数据库都备份到我本地的计算机硬盘里),请问都需要什么,应该如何操作,越详细越好。(如果在这里说不清楚请加我的QQ1092368027,谢谢)
linux系统下使用脚本定时备份数据库,代码如下:#!/bin/bash
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第
#18行,则默认以tag的方式备份
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home/wang/www/backup/mysql/mysqlbackup
LogFile=/home/wang/www/backup/mysql/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date=\'5 days ago\').tgz
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
echo "[$OldFile]No Old Backup File!" >> $LogFile
fi
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile
else
case $BackupMethod in
mysqldump*)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser --opt $DBName > $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy*)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
*)
/etc/init.d/mysqld stop >/dev/null 2>&1
tar czvf $NewFile $DBPath >> $LogFile 2>&1
/etc/init.d/mysqld start >/dev/null 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
;;
esac
fi
echo "-------------------------------------------"
echo
#lftp -f lftp.sh 如果有FTP可同时上传ftp中。
再利用crontab命令生成/var/spool/cron/root 文件:
#crontab –e
//打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令
//m h dom mon dow command
//具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)
//如: 10 02 * * * /home/backup/autobackupmysql.sh (表示零晨二点十分执行备份脚本) 参考技术A LINUX通常使用tar命令进行数据备份,但外面很多资料所介绍的比较专业,也就比较复杂些,初学者很难看明白。现介绍一种“傻瓜式备份方案”,供初建LINUX服务器者参考。
1、首先我们要知道需要备份哪些数据。
一般包括数据库和网站数据,在本例中,数据库位于/var/lib/mysql/目录;网站位于/www/users/目录。
2、确定需要将数据备份在哪里,在这个分区中创建一个目录
应该挑选一个空间较大的分区,例: /var
键入命令:
cd /var
mkdir backup
3、创建备份目录后,进入备份目录
cd /var/backup
4、数据库一般应该完全备份,建议每次备份以当前日期命名
tar -czvf mysql20051015.tar.gz /var/lib/mysql/*
这个命令的意思是,在当前目录下生成一个备份,备份的内容是/var/lib/mysql/目录下的所有内容
5、如果网站数据不多,可以每次将网站数据完全备份
tar -czvf users20051015.tar.gz /www/users/*
6、如果网站数据较多(尤其是运营E站通,商城等每天更新文件量较大的系统),建议每月一次完全备份,每天(或每周)一次更新备份。这个备份方式即所谓的“差分备份”,差分备份要求每一次更新的备份都要针对上一次完全备份的时间。
例如:在10月15日进行一次完全备份:
tar -czvf users20051015.tar.gz /www/users/*
在下一次完全备份前针对10月15日的完全备份进行更新备份(如每周一次):
tar -czvf users20051015.tar.gz /www/users/* --newer 10/15/2005/
在进行“差分备份”后,如果需要恢复数据,应该是先恢复完全备份,再将最近的一次更新备份覆盖完全备份 参考技术B 直接备份数据库就行了。
在后台都有备份选项的,备份到本地。
要连网站程序一起备份的话,可以用FTP软件将整个网站下载到本地。本回答被提问者采纳 参考技术C 备份分为两部分,网页、数据库。
1.用ftp软件备份网页文件及设置
2.用系统提供的数据库管理软件,备份数据库。
还有一个办法,咨询你的代理商,他们有备份方案的。比上面的方法省事。
搭建Git服务器及备份服务器
参考技术A OS:CentOS 7.2
Git:1.8.3.1
备份模式:
以下步骤以双机备份为例,单机备份同理,只是在镜像git项目的时候把git url换成单机中的git项目目录即可。
首先,查看系统软件库中是否有git和git的版本:
CentOS 7.2环境下的输出如下:
CentOS 7.x版本的仓库中已经附带了1.8.3.1版本的git,可以直接安装。
CentOS 6.x中的git是1.7.x版本,自带库中git版本低的linux发行版可以添加git1.8.3.1的源来安装git,但这个操作要求本机能访问互联网
其他版本的git理论上也可以,请自行测试
结果最后显示“安装完成”或“Complete”表示安装成功。可以直接使用git命令测试一下:
输出如下表示git安装成功并可用。
创建一个git用户,用来提供给外部用户以git url的方式访问git库。
在用户目录或其他对外目录中创建 /git/repos 目录,用来存放git库。
注意: 尽量使用git用户来创建该目录,方便以后git操作该目录,如果是使用其他用户创建的,记得使用以下命令将该目录的owner改为git:
为了方便访问,可以在根目录下创建一个软链连接到该目录:
这样设置后,假如以后有一个库叫 test.git ,那么就可以通过以下url来访问git库了:
创建一个测试库用来测试备份及连通性。
同主GIT服务器的《安装git》章节。
同主GIT服务器的《创建git库目录》章节。
目录结构尽量与主git服务器上的结构一致,如果不一致,使用软链的形式将git url配置为与主git服务器一致,这样保证在切换服务器时,客户端不用做修改操作。
以上个步骤中创建的 test.git 为例:
这样,主git服务器中的 test.git 就镜像到备份机中了。
如果主服务器的git项目发生了变更,可以将变更同步到备份机。
将以上同步命令写成脚本,添加一个定时任务来定时同步即可。
(待补充)
备份同步时每次都需要输入主git服务器的密码,比较麻烦,也不利于定时同步的脚本操作,可以使用ssh免密登录的方式,在主服务器上配置备份服务器的公钥。
一路Enter(回车键),完成后会打印出密钥的生成位置,通常在用户主目录的 .ssh 目录中。默认情况下会生成以下两个文件:
一定要注意上述命令中的第三步,权限要设置对,否则认证不过去不能免密登录。
如果在实际运行中,主git服务器挂了一段时间,在这段时间里一直是备份git服务器在工作,那么在修复好主服务器后需要将这一段时间的变更同步回主服务器。
操作完成后备份库自上一次同步后的更改都推送到了主库。
以上是关于如何在Linux服务器中备份的主要内容,如果未能解决你的问题,请参考以下文章
linux服务器中如何登陆另一台Linux服务器中的Oracle数据库进行全库备份?