请问,centos7如何用xfsdump对文件或文件夹进行备份,还原
最简单粗暴的备份方式就是使用tar命令,用tar打包备份有个最大的优点是,解压后的权限和修改时间是不变的
例:将/test/目录下所有文件备份
tar -zcvf backtargz /test/
解压:
tar -zxvf backtargz
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#数据库用户名
dbuser='root'
#数据库用密码
dbpasswd=''
需要备份的数据库,多个数据库用空格分开
dbname='xiaohuai xiaohuai2'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/home/mysqlbak'
#数据备份路径
datapath='/home/mysqlbak'
#日志记录头部
echo ‘"备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/loglog
#正式备份数据库
for table in $dbname; do
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}sql` 2>> ${logpath}/mysqlloglog;
还是利用crontab功能,这个功能太实用了,赞一个先
利用人家的备份脚本:
---------------------------------代码开始----------人称可爱的分割线------------------------------------------------------
#!/bin/bash
#好的做法
#根据项目不同来重命名该脚本
#例如 amountebaksh or pandawillsbaksh
#该脚本最好放在 $bakpp定义的绝对路径部分
#你可以在$bakpp下找到相应的备份文件
#例如 /usr/backup/amountebaksh or /usr/backup/pandawillsbaksh
########## Init Path ########
# 在下面的参数中必须定义的参数有 $bakpp、$project、$projectpp
TAR=/bin/tar
# 存放备份文件的地方,以项目名称区分
bakpp=/var/www/html/media/backupfiles/"$project"
# 需要备份的文件夹,文件夹的路径
project=media
projectpp=/var/www/html/media/root/
# parament for varible
ym=`date +%Y%m`
ymd=`date +%Y%m%d`
# 存储备份文件的子目录,以月份区分,他的上级目录是$bakpp定义的
monthbakpp=$bakpp/$ym
gidpp=$monthbakpp
gidshot=gid$project$ym
# 完全备份的文件名
fullname=$ym
# 增量备份的文件名
incrementalname=$ymd
# Record the location of the log
log=$bakpp/$projectlog
############ chk_full #######################
# 检查完全备份是否存在,如果不存在就创建它
#this function check fullbackup file exist or not , if not then create fullbackup now
chk_full()
{
if [ -e "$monthbakpp"/"$project"_"$ym"_fulltargz ];then
echo ""$project"_"$ym"_fulltargz file exist!! ====`date +%Y-%m-%d-%T` " >>$log
else
tar_full
fi
}
######### chk_incremental ########
# 检查增量备份是否存在
chk_incremental()
{
while [ -e "$monthbakpp"/"$project"_"$incrementalname"_incrementaltargz ]
do
incrementalname=`echo "$incrementalname + 01" | bc `
done
}
######## tar_incremental #######
# 执行增量备份
tar_incremental()
{
cd $projectpp
echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incrementaltargz" >> $log
sleep 3
$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$incrementalname"_incrementaltargz $project
echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incrementaltargz" >> $log
}
######## tar_full ###########
tar_full()
{
touch $gidpp/$gidshot
cd $projectpp
echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_fulltargz" >> $log
$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$fullname"_fulltargz $project
echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_fulltargz" >> $log
}
########### backup ##############################
# 总体调用备份,此时会做相应的检查以确保备份前提准备充分
backup()
{
if [ -d $monthbakpp ]; then
chk_full
chk_incremental
tar_incremental
else
mkdir -p $bakpp/$ym
tar_full
fi
}
########### let's begin #############
# 先检查$bakpp是否存在,如果不存在先创建后备份
if [ -d $bakpp ];then
backup
else
mkdir -p $bakpp
backup
fi
#advice you can create a file for put backup file, eg /usr/cctcc
#crontab
#mini hours day month week command
# /5 /home/mmroot/zbb/aaash
# 0 1 /1 /home/mmroot/zbb/aaash
# tar -ztf testtargz 查看备份文件里面的文件
---------------------------------代码结束----------人称可爱的分割线------------------------------------------------------
说明一下我的目录结构
挂载装数据的分区shda5 挂载到/var/www/html/media
php web文件放到/var/www/html/media/root
要备份的就是/var/www/html/media/root/media目录
存放备份目录在/var/www/html/media/bacupfiles
把以上代码建立一个文件放入/usr/tmp/autobakfilesh
修改/usr/tmp/task加入一行:
原来的这行:/2 elinks -source http://localhost/autotasksphp
加入这行:
12 12 /usr/tmp/autobakfilesh
每天12点12分执行 这个脚本
另外注意就是 chmod +x /usr/tmp/autobakfilesh 给予执行权限,要不然会提示没有权限
the end
默认用户名是root
如果忘记了,可以进单用户破解
破解方法
1 Linux开机引导的时候,按键盘上的e 就可以进入进入GRUB菜单界面。
2在出现GRUB引导画面时(CentOS(2618-274)),按字母e键,进入GRUB编辑状态。
3把光标移动到kernel 那一行,再敲入“e”进入命令行编辑,
在kernel 一行的最后加上空格s,回车
敲入“b”,启动系统,即进入单用户模式,
4这个时候就可以用passwd命令改密码了。
passwd root
改完以后reboot重启。
0条评论