定时备份 MySQL 并上传到七牛

多数应用场景下,我们需要对重要数据进行备份、并放置到一个安全的地方,以备不时之需。

常见的 MySQL 数据备份方式有,直接打包复制对应的数据库或表文件(物理备份)、mysqldump 全量逻辑备份、xtrabackup 增量逻辑备份等。

常见的数据存储方式有,本机存储、FTP 上传到远程服务器、云存储(如阿里云OSS、七牛云存储等)、甚至本地也行。

我们可能不想每次都手动去备份,也不想每次都那么耗时间的去下载,也不想就放在服务器上丢了,因为我们需要异地备份。那我们可以尝试,写个脚本定时备份数据库,然后自动上传到指定服务器或云存储。

这里,我们说说 Linux 服务器下备份 MySQL 并上传到七牛云存储的方式。

Git 撤销所有未提交(Commit)的内容

撸了好多代码,但是突然设计改了(~~o(>_<)o ~~);或者引入个第三方库,后来又发现用不着,想删掉,但文件太多了(比如几百个);那,怎么办呢,都不想了…Git 比人聪明,所以能很方便的帮我们解决问题。

场景一

需要撤销的内容文件属于未跟踪的状态。如下命令产生的场景:

mkdir git-tmp
cd git-tmp
git init
echo '第1次输入的内容' > file1.log
git status

以上命令产生了file1.log文件,该文件未被执行过git add、也不在版本库中。清除此类未被跟踪的文件:

git clean -fdx

Go 标准库 http.FileServer 实现静态文件服务

http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。

http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path")))

访问 http://127.0.0.1:8080,即可看到类似 Nginx 中 autoindex 目录浏览功能。

macOS 系统 .DS_Store 文件详解

.DS_Store 文件

.DS_Store 是 Finder 用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。

显示/隐藏 Mac 隐藏文件

  • 显示defaults write com.apple.finder AppleShowAllFiles -bool true
  • 隐藏defaults write com.apple.finder AppleShowAllFiles -bool false

删除 .DS_Store 文件

  • find /path/to/files -name ".DS_Store" -delete
  • find /path/to/files –type f –name ".DS_Store" -print –delete
  • find /path/to/files –type f –name ".DS_Store" -print0 | xargs –0 rm -rdf

史上最全的 Python 3 类型转换指南

int

支持转换为 int 类型的,仅有 floatstrbytes,其他类型均不支持。

float -> int

会去掉小数点及后面的数值,仅保留整数部分。

int(-12.94)     # -12

str -> int

如果字符串中有数字(0-9)和正负号(+/-)以外的字符,就会报错。

int('1209')     # 1209
int('-12')      # -12
int('+1008')    # 1008

bytes -> int

如果 bytes 中有数字(0-9)和正负号(+/-)以外的字符,就会报错。

int(b'1209')     # 1209
int(b'-12')      # -12
int(b'+1008')    # 1008

Python 3 进阶 —— print 打印和输出

在 Python 中,print 可以打印所有变量数据,包括自定义类型。

在 2.x 版本中,print 是个语句,但在 3.x 中却是个内置函数,并且拥有更丰富的功能。

参数选项

可以用 help(print) 来查看 print 函数的参数解释。

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

Python 判断文件/目录是否存在

使用 os 模块

  • 判断文件是否存在

    os.path.isfile(path)
    
  • 判断目录是否存在

    os.path.isdir(path)
    
  • 判断路径是否存在

    # 使用 path 模块
    os.path.exists(path)
        
    # 使用 access() 方法
    os.access(path, os.F_OK)
    

Python 3 进阶 —— 使用 PyMySQL 操作 MySQL

PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务、存储过程、批量执行等。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

安装

pip install PyMySQL

创建数据库连接

import pymysql

connection = pymysql.connect(host='localhost',
                             port=3306,
                             user='root',
                             password='root',
                             db='demo',
                             charset='utf8')