存档

文章标签 ‘备份’

mysqldump选择gzip压缩之后为.tar.gz格式如何再次导入

2020年11月12日 评论已被关闭

在使用mysqldump备份数据库的时候导出的时候一般有2种选择,压缩和不压缩

参见文章:
【实战】linux下mysql导入和导出数据库,source和mysqldump命令
http://www.zhanghongliang.com/article/498

这里我们记录下压缩的格式再次导入的特殊问题:mysqldump选择gzip压缩之后为.tar.gz格式如何再次导入

在上方链接的文章中,压缩命令是:

mysqldump -hlocalhost -uroot -p --quick 数据库名称 | gzip > /backup/备份文件名.sql.gz

但是往往有些人会用这个命令,导致压缩包格式为.tar.gz

mysqldump -hlocalhost -uroot -p --quick 数据库名称 | gzip > /backup/备份文件名.sql.tar.gz

那么当mysqldump选择gzip压缩之后为.tar.gz格式如何再次导入?请参考:
A,假设我们在windows服务器上操作,直接把备份文件名.sql.tar.gz(比如abc.sql.tar.gz)下载到本地windows,然后选择7-zip来操作,右键abc.sql.tar.gz,7-zip,提取到“abc.sql.tar\”;再使用source命令导入abc.sql.tar即可完成再次导入

B,假设我们在linux服务器上直接再次导入,可以
1,执行sudo gunzip abc.sql.tar.gz,得到:abc.sql.tar
2,source abc.sql.tar

这样我们就解决了.tar.gz再次导入的问题

shell脚本实现sh自动删除清理指定过期日期备份功能

2020年8月8日 没有评论

本脚本具体功能,请看脚本中备注的地方,前提条件,比如/backup/mybk下面的目录是年月日格式,比如:20200801(我的备份目录中,还有一个now文件夹也保留),大家可以自行修改为自己的代码,免费拿走。

#!/bin/bash
ROOT_UID=0
E_NOTROOT=67
if [ "$UID" -ne "$ROOT_UID" ]
then
        echo "Must be root to run this script"
        exit $E_NOTROT
fi

#配置需要操作的备份目录
backupDir=/backup/mybk

:<<!
#本脚本可以实现:(假设当前月是202008)
#保留当前备份文件夹now
#保留当前月备份文件夹:202008
#保留当前月后3个月备份文件夹:202007+202006+202005
#保留当前月后9个月备份文件夹中日期最大的一份(删除其他):202004+202003+202002+202001+201912+201911+201910+201909+201908
!


function arrDelete(){
	#把传递过来的数组作为arr
	arr=$1

	#找出数组中的最大值,初始值为0
	MAX=0
	for v in ${arr[@]}
	do
		if [[ $MAX -le $v ]]
		then
		    MAX=$v
		fi
	done

	#再循环一遍,比较大小,找到应该删除的文件夹
	for v in ${arr[@]}
	do
		if [[ $MAX -ne $v ]]
		then
			echo "不是当月最大,删除:"$backupDir"/"$v
			rm -rf $backupDir"/"$v
		fi
	done
}

function read_dir(){

	monthAgo0=$(date +%Y%m)
	monthAgo1=$(date "-d 1 month ago" +%Y%m)
	monthAgo2=$(date "-d 2 month ago" +%Y%m)
	monthAgo3=$(date "-d 3 month ago" +%Y%m)
	monthAgo4=$(date "-d 4 month ago" +%Y%m)
	monthAgo5=$(date "-d 5 month ago" +%Y%m)
	monthAgo6=$(date "-d 6 month ago" +%Y%m)
	monthAgo7=$(date "-d 7 month ago" +%Y%m)
	monthAgo8=$(date "-d 8 month ago" +%Y%m)
	monthAgo9=$(date "-d 9 month ago" +%Y%m)
	monthAgo10=$(date "-d 10 month ago" +%Y%m)
	monthAgo11=$(date "-d 11 month ago" +%Y%m)
	monthAgo12=$(date "-d 12 month ago" +%Y%m)

	for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
	do
		if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
	then
		if [[ $file == *now* ]]
		then
			echo "now,保留全部:"$1"/"$file
		elif [[ $file == *$monthAgo0* ]]
		then
			echo "当月,保留全部:"$1"/"$file
		elif [[ $file == *$monthAgo1* ]] || [[ $file == *$monthAgo2* ]] || [[ $file == *$monthAgo3* ]]
		then
			echo "最近3个月,保留全部:"$1"/"$file
		elif [[ $file == *$monthAgo4* ]]
		then
			arrmonthAgo4[${#arrmonthAgo4[@]}]=$file
		elif [[ $file == *$monthAgo5* ]]
		then
			arrmonthAgo5[${#arrmonthAgo5[@]}]=$file
		elif [[ $file == *$monthAgo6* ]]
		then
			arrmonthAgo6[${#arrmonthAgo6[@]}]=$file
		elif [[ $file == *$monthAgo7* ]]
		then
			arrmonthAgo7[${#arrmonthAgo7[@]}]=$file
		elif [[ $file == *$monthAgo8* ]]
		then
			arrmonthAgo8[${#arrmonthAgo8[@]}]=$file
		elif [[ $file == *$monthAgo9* ]]
		then
			arrmonthAgo9[${#arrmonthAgo9[@]}]=$file
		elif [[ $file == *$monthAgo10* ]]
		then
			arrmonthAgo10[${#arrmonthAgo10[@]}]=$file
		elif [[ $file == *$monthAgo11* ]]
		then
			arrmonthAgo11[${#arrmonthAgo11[@]}]=$file
		elif [[ $file == *$monthAgo12* ]]
		then
			arrmonthAgo12[${#arrmonthAgo12[@]}]=$file
		else
			echo "超过12个月,删除:"$1"/"$file
			rm -rf $1"/"$file
		fi
	else
		echo "is file,skip:"$1"/"$file
	fi
	done

	#循环各个数组,删除其中不是最大的一个文件夹
	#注意:传递数组为参数,必须要用引号扩起来,否则只能获取到第一个下标
	arrDelete "${arrmonthAgo4[*]}"
	arrDelete "${arrmonthAgo5[*]}"
	arrDelete "${arrmonthAgo6[*]}"
	arrDelete "${arrmonthAgo7[*]}"
	arrDelete "${arrmonthAgo8[*]}"
	arrDelete "${arrmonthAgo9[*]}"
	arrDelete "${arrmonthAgo10[*]}"
	arrDelete "${arrmonthAgo11[*]}"
	arrDelete "${arrmonthAgo12[*]}"
}

#遍历备份目录并操作
read_dir $backupDir

分类: ubuntu高手 标签: , , , , ,

ubuntu如何挂载已经有数据的硬盘

2020年5月15日 没有评论

往往我们需要将已经存有数据的硬盘挂载到linux系统中,比如ubuntu,那么如何才能实现这个目的,如果是新手,往往操作不当,可能会格式化硬盘,这样数据就会丢失,为了避免出现操作不当,我这里记录下ubuntu如何挂载已经有数据的硬盘

sudo fdisk -l
可以看到自己想挂载的硬盘,比如:/dev/sdb1
这个时候假如我们希望挂载到/backup下,即使用/backup来浏览磁盘
我们先到/下创建backup目录:
sudo mkdir /backup
再执行:sudo mount -t ext4 /dev/sdb1 /backup
就可以完成挂载,但是想要电脑重启后仍然自动挂载
编辑文件:sudo vim /etc/fstab
在内容最后一行输入:/dev/sdb1 /backup ext4 defaults 0 1
保存,退出,ubuntu如何挂载已经有数据的硬盘的问题就解决了

ubuntu使用wput上传文件到指定ftp

2017年10月29日 没有评论

sudo apt-get install wput

sudo wput /www/data ftp://username:password@ip/backup/data

将本地的/www/data目录下的文件上传到远程ftp的根目录下的/backup/data目录

如果password含有特殊字符,可以将password用单引号括起来,比如:

sudo wput /www/data ftp://username:’password’@ip/backup/data

就可以使用wput备份文件到指定ftp了,当然你也可以使用ftp中的sh脚本。

默认如果存在的话会跳过复制。

参考文献:

http://www.doc88.com/p-801906663807.html

https://linux.die.net/man/1/wput

分类: ubuntu高手 标签: , ,

利用phpMyBackupPro巧妙批量定期备份mysql数据库,phpmyadmin无法完成!

2013年6月15日 没有评论

由于工作需要,今天在网络寻找批量定期备份mysql数据库的方法,首先我从百度和谷歌都搜索了相关的phpmyadmin的使用文档,搜索关键词如下:
1,phpmyadmin批量备份mysql数据库
2,如何使用phpmyadmin定期备份mysql数据库
3,phpmyadmin定期批量备份mysql数据库
找了这些关键词都无法找到想要的结果,而最终的结果是phpmyadmin无法定期备份数据库。而且单次导出也很麻烦,最主要的是不支持远程ftp发送。

有了这些请求之后,我就尝试了用phpmyadmin来批量导出数据库为sql文件,其实这个phpmyadmin是可以做到的,具体流程如下:
1,打开phpmyadmin
2,点击export导出
3,选择所有数据库
4,选择zip压缩
5,开始导出
这样能完整的导出备份所有的数据库,但是效率低下,尤其是表一多,那就完蛋了。

后来通过网络搜索到phpMyBackupPro,可以非常巧妙的定期批量备份mysql,那么具体定期备份方法其实很简单,你只要下载phpMyBackupPro这个软件即可,然后到官方寻找批量备份的方法。
我这里只简单的介绍下方法

直接上传phpMyBackupPro下载包到ftp中,然后点击导航上的configuration,依次配置下信息,很简单的英文,都能看懂。
首次登陆不需要密码,配置完成之后需要mysql密码

最主要的一点是要告诉大家,务必修改默认的导出路径export为别的路径,否则太容易暴漏了。
修改方法:
打开definitions.php,修改$_PMBP_EXPORT_DIR即可,注意,目录一定要以”/”结尾

整体的批量定期备份mysql就大工搞成了。phpMyBackupPro还是不错的,尤其是在批量备份上,还支持远程ftp备份,建议phpmyadmin增加个这样的功能

css.php