纵有疾风起
人生不言弃

使用脚本备份Typecho博客数据

以下文章内容首发于本人博客:https://www.chiloh.cn,原Hexo博客已废弃,有问题可以评论咨询联系。

数据无价!基于此理念,决定对本博客的数据(网站内容及数据库)进行定期备份。但人工备份过程繁琐,容易疏忽,因此采用脚本进行备份。

脚本使用

作用:Typecho备份脚本。将数据库和usr目录备份打包。

用法:上传脚本至VPS,执行./backup_typecho.sh /path/to/yoursite.com/即可开始备份,其中/path/to/yoursite.com为博客程序安装位置。备份结果放在/var/backups/typecho/yoursite.com/目录下。另外使用时注意给/var/backups/目录添加写入权限。

定期:由于博客更新不是很频繁,因此未采用Crontab定期执行脚本备份,转而采用人工更新内容后执行备份,也能帮助自己建立定期更新博客的习惯。

脚本代码

#设置备份目录backup_dir="/var/backups/typecho/"function print_help(){    echo 'Usage: $shell dir_to_typecho'}function die(){    test -z "$1" || echo "$1"    exit 1}function parse_db(){    config_file=$2    db_key=$1    cat "$config_file" | grep -A 6 '$db' | grep '=>' | grep "$db_key" | awk -F "'" '{print $4}'}if [ "$#" -lt "1" ] then    print_help    exit 1fite_dir="$1"backup_dir="$backup_dir`basename "$te_dir"`"#判断备份时间是否过频min_time="43200" #12Hflag="/tmp/last_backup_typecho_`echo $te_dir | md5sum | awk '{print $1}'`"last_backup="0"test -f $flag && last_backup="`ls -l --time-style=+%s "$flag" | awk '{print $6}'`"delta_time=$(expr "`date +%s`" - "$last_backup")test "$delta_time" -lt "$min_time" && die "Time from last backup is less then $min_time, skip this time"#初始化变量te_config="$te_dir/config.inc.php"te_usr_dir="$te_dir/usr"#初始化环境test -f "$te_config" || die "Can not find config file: $te_config"test -d "$backup_dir" || mkdir -p "$backup_dir" || die "Can not create backup dir"db_host=$(parse_db 'host' "$te_config")db_port=$(parse_db 'port' "$te_config")db_user=$(parse_db 'user' "$te_config")db_pass=$(parse_db 'password' "$te_config")db_name=$(parse_db 'database' "$te_config")#备份数据库echo "Found database config: host=$db_host, port=$db_port, user=$db_user, pass=**** and database=$db_name"echo 'Try to dump database....'dump_target='/tmp/database.sql';test -f "$dump_target" && rm "$dump_target"mysqldump -h"$db_host" -P"$db_port" -u"$db_user" -p"$db_pass" "$db_name" > "$dump_target"echo 'Dump done.'#备份usr目录echo "Try to tar usr dir..."tar_target="/tmp/user.tar.gz"test -f "$tar_target" && rm "$tar_target"tar czvf "$tar_target" "$te_usr_dir"echo "Tar done."echo "Try to pack..."md5sum "$dump_target" > "$dump_target.md5sum"md5sum "$tar_target" > "$tar_target.md5sum"backup_file="$backup_dir/`basename "$te_dir"`.`date +%s`.tar.gz"tar czvf "$backup_file" "$dump_target" "$dump_target.md5sum" "$tar_target" "$tar_target.md5sum"#清理临时文件rm $tar_targetrm "$tar_target.md5sum"rm $dump_targetrm "$dump_target.md5sum"touch "$flag"echo "Backup to $backup_file done."

文章转载于:https://www.jianshu.com/p/4a744e78f342

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 使用脚本备份Typecho博客数据
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录