Skip to content

Commit 05d6734

Browse files
committed
已经测试成功自动备份和自动压缩备份数据库文件
1 parent 3bed5bd commit 05d6734

File tree

5 files changed

+192
-1
lines changed

5 files changed

+192
-1
lines changed

Lua-Script/metatable/__add.lua

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--
2+
-- Created by IntelliJ IDEA.
3+
-- User: Administrator
4+
-- Date: 2017/6/6
5+
-- Time: 8:57
6+
-- To change this template use File | Settings | File Templates.
7+
--
8+
--在 Lua 5.1 语言中,元表 (metatable) 的表现行为类似于 C++ 语言中的操作符重载,例如我们可以重载 "__add" 元方法 (metamethod),来计算两个 Lua 数组的并集;或者重载 "__index" 方法,来定义我们自己的 Hash 函数。Lua 提供了两个十分重要的用来处理元表的方法,如下:
9+
--setmetatable(table, metatable):此方法用于为一个表设置元表。
10+
--getmetatable(table):此方法用于获取表的元表对象
11+
12+
------------------------------------------------------ 通过重载 "__add" 元方法来计算集合的并集实例:
13+
local set1 = {10,20,30}
14+
local set2 = {40,50,60}
15+
-- 将用于重载__add的函数,注意第一个参数是self
16+
local union = function (self, another)
17+
local set = {}
18+
local result = {}
19+
20+
-- 利用数组来确保集合的互异性
21+
for i, j in pairs(self) do set[j] = true end
22+
for i, j in pairs(another) do set[j] = true end
23+
24+
-- 加入结果集合
25+
for i, j in pairs(set) do table.insert(result, i) end
26+
return result
27+
end
28+
setmetatable(set1, {__add = union}) -- 重载 set1 表的 __add 元方法
29+
30+
local set3 = set1 + set2
31+
for _, j in pairs(set3) do
32+
io.write(j.." ") -->output:30 50 20 40 10
33+
end

Nginx-Rtmp/Shell_script.md

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
## SHELL脚本
2+
+ [如何不耍流氓的做运维之-SHELL脚本](http://mp.weixin.qq.com/s/aI3ha5BvzIvqpn2ddAK5zQ)
3+
+ [已经测试成功自动备份和自动压缩备份数据库文件](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/slimp_backup_db.sh)
4+
## SHELL脚本小技巧
5+
```bash
6+
#!/bin/bash
7+
#######################################################
8+
# $Name: shell_template.sh
9+
# $Version: v1.0
10+
# $Function: Backup MySQL Databases Template Script
11+
# $Author: Jason Zhao
12+
# $organization: https://www.unixhot.com/
13+
# $Create Date: 2016-08-27
14+
# $Description: You know what i mean,hehe
15+
#######################################################
16+
17+
# Shell Env
18+
SHELL_NAME="shell_template.sh"
19+
SHELL_DIR="/opt/shell"
20+
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
21+
LOCK_FILE="/tmp/${SHELL_NAME}.lock"
22+
23+
#Write Log
24+
shell_log(){
25+
LOG_INFO=$1
26+
echo "$(date "+%Y-%m-%d") $(date "+%H-%M-%S") : ${SHELL_NAME} : ${LOG_INFO}" >> ${SHELL_LOG}
27+
}
28+
29+
# Shell Usage shell_usage函数,用来告诉用户,这个脚本的使用方法
30+
shell_usage(){
31+
echo $"Usage: $0 {backup}"
32+
}
33+
34+
# 函数shell_lock和shell_unlock非常简单,就是创建一个锁文件
35+
shell_lock(){
36+
touch ${LOCK_FILE}
37+
}
38+
39+
shell_unlock(){
40+
rm -f ${LOCK_FILE}
41+
}
42+
43+
# Backup MySQL All Database with mysqldump or innobackupex
44+
mysql_backup(){
45+
if [ -f "$LOCK_FILE" ];then
46+
shell_log "${SHELL_NAME} is running"
47+
echo "${SHELL_NAME}" is running && exit
48+
fi
49+
shell_log "mysql backup start"
50+
shell_lock
51+
sleep 10
52+
shell_log "mysql backup stop"
53+
shell_unlock
54+
}
55+
56+
# Main Function
57+
main(){
58+
case $1 in
59+
backup)
60+
mysql_backup
61+
;;
62+
*)
63+
shell_usage;
64+
esac
65+
}
66+
67+
#Exec
68+
main $1
69+
```

Nginx-Rtmp/shell_usage.sh

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/bin/bash
2+
#######################################################
3+
# $Name: shell_template.sh
4+
# $Version: v1.0
5+
# $Function: Backup MySQL Databases Script
6+
# $Author: ShaoBo Wan
7+
# $organization: https://github.com/Tinywan
8+
# $Create Date: 2017-06-27
9+
# $Description: 定期备份MySQL数据库
10+
#######################################################
11+
12+
# Shell Env
13+
SHELL_NAME="backup_db.sh"
14+
SHELL_DIR="/home/www/database_back"
15+
SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log"
16+
LOCK_FILE="/tmp/${SHELL_NAME}.lock"
17+
BACKUP_NAME="${SHELL_DIR}/${SHELL_NAME}.log"
18+
19+
#Write Log
20+
shell_log(){
21+
LOG_INFO=$1
22+
echo "$(date "+%Y-%m-%d") $(date "+%H-%M-%S") : ${SHELL_NAME} : ${LOG_INFO}" >> ${SHELL_LOG}
23+
}
24+
25+
# Shell Usage shell_usage函数,用来告诉用户,这个脚本的使用方法
26+
shell_usage(){
27+
echo $"Usage: $0 {backup}"
28+
}
29+
30+
# 函数shell_lock和shell_unlock非常简单,就是创建一个锁文件
31+
shell_lock(){
32+
touch ${LOCK_FILE}
33+
}
34+
35+
shell_unlock(){
36+
rm -f ${LOCK_FILE}
37+
}
38+
39+
# Backup MySQL All Database with mysqldump or innobackupex
40+
mysql_backup(){
41+
if [ -f "$LOCK_FILE" ];then
42+
shell_log "${SHELL_NAME} is running"
43+
echo "${SHELL_NAME}" is running && exit
44+
fi
45+
shell_log "mysql backup start"
46+
shell_lock
47+
sleep 10
48+
shell_log "mysql backup stop"
49+
shell_unlock
50+
}
51+
52+
# Main Function
53+
main(){
54+
case $1 in
55+
backup)
56+
mysql_backup
57+
;;
58+
*)
59+
shell_usage;
60+
esac
61+
}
62+
63+
#Exec
64+
main $1

Nginx-Rtmp/slimp_backup_db.sh

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
#This is mysql mysqldaiybak scripts
3+
#2015-05-01
4+
database=weblive
5+
databak_dir=/home/www/database_back
6+
logs_dir=/home/www/database_back/logs
7+
dumpbin=/usr/bin/mysqldump
8+
9+
DATE=$(date +%Y%m%d)
10+
date_time=$(date +"%y-%m-%d %H:%M:%S")
11+
backup_name=sansan_bak1_${DATE}.sql
12+
logFile=$logs_dir/sansan_${DATE}.log
13+
14+
echo " " > $logFile
15+
echo "-------------$(date +"%y-%m-%d %H:%M:%S") backup start ----------------------" >> $logFile
16+
17+
$dumpbin $database >$databak_dir/$backup_name
18+
/bin/bzip2 $backup_name
19+
cd $databak_dir
20+
# 1 mouth = 44640 min
21+
find ./ -mindepth 1 -maxdepth 3 -type f -name *.bz2 -mmin +43200 | xargs rm -rf
22+
find ./ -mindepth 1 -maxdepth 3 -type f -name *.sql -mmin +1440 | xargs rm -rf
23+
echo "-------------$(date +"%y-%m-%d %H:%M:%S") backup end ----------------------" >> $logFile

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- [x] 编写快速安全Bash脚本的建议
1111
- [x] Shell脚本实现分日志级别记录日志
1212
- [x] Nginx日志定时备份和删除
13+
- [x] SHELL脚本小技巧
1314
+ [Lua基础知识](#Lua_base_knowledge)
1415
+ [Lua 基础语法](#Lua-base)
1516
+ [luajit 执行文件默认安装路径](#Nginx_base_knowledge)
@@ -117,6 +118,7 @@
117118
+ [编写快速安全Bash脚本的建议](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Shell/write-shell-suggestions.md)
118119
+ [shell脚本实现分日志级别记录日志](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Shell_Log.sh)
119120
+ [Nginx日志定时备份和删除](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Shell_Nginx_Log_cut.sh)
121+
+ [SHELL脚本小技巧](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Shell_script.md)
120122
## <a name="Lua_base_knowledge"/> Lua基础知识
121123
#### Lua 基础语法 <a name="Lua-base"/>
122124
+ 删除一个全局变量,只要将变量值赋值为nil:`a = nil`,当且仅当一个变量不为nil 时,这个变量存在
@@ -523,7 +525,7 @@
523525
524526
local t1 = {}
525527
local t2 = {}
526-
local mt = { __index = smartMan } -- __index 可以是一个函数,也可以是一个函数
528+
local mt = { __index = smartMan } -- __index 可以是一个表,也可以是一个函数
527529
setmetatable(t1, mt)
528530
setmetatable(t2, mt)
529531
print(t1.money)

0 commit comments

Comments
 (0)