1) 检查 repository 所用的连接 REMOTE URL
$ git remote -v
origin git@github.com:user/repo.git (fetch)
origin git@github.com:user/repo.git (push)
# 重新配置 REMOTE URL (从 SSH 改为 HTTPS)
$ git remote set-url origin https://github.com/user/repo
2) 配置
------ Linux ------
$ git config credential.helper store
------ Mac ------
$ git config --global credential.helper osxkeychain
------ Windows ------
$ git config --global credential.helper manager
3) 测试: 修改文件后, push 上载
$ git add <filename> / git rm <filename>
$ git commit -m "<title>"
# 第一次输入要 email 户口 和密码, 以后即便重启也不需再输入密码了
$ git push https://github.com/user/repo
4) 检查
会生成 2 个文件
$ cat ~/.gitconfig
[user]
email = uid@email.com
name = Jason Mun
[credential]
helper = store
$ cat ~/.git-credentials
https://<uid>%40<email.com>:<password>%23@github.com
%40: @
%23: #
广告
本站里的文章大部分经过自行整理与测试
2017年12月22日星期五
2017年9月19日星期二
自动生成 configure 和 Makefile
1) 编写 helloworld.c
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hello, Linux World! ");
return 0;
}
2) 生成 configure.scan, 改名为 configure.ac
2.1) 扫描源代码目录, 生成 configure.scan
$ autoscan
2.2) 改名为 configure.ac
$ mv configure.scan configure.ac
2.3) 编辑 configure.ac
$ vi configure.ac
AC_INIT(helloworld.c)
AM_INIT_AUTOMAKE(helloworld, 1.0)
AC_PROG_CC
AC_OUTPUT(Makefile)
3) 生成 aclocal.m4 和 configure
3.1) 生成 aclocal.m4
$ aclocal
3.2) 生成 configure
$ autoconf
4) 编写 Makefile.am
$ vi Makefile.am
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=helloworld
helloworld_SOURCES=helloworld.c
5) 生成 Makefile
$ automake --add-missing
6) 测试
$ ./configure
$ make
$ ./helloworld
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hello, Linux World! ");
return 0;
}
2) 生成 configure.scan, 改名为 configure.ac
2.1) 扫描源代码目录, 生成 configure.scan
$ autoscan
2.2) 改名为 configure.ac
$ mv configure.scan configure.ac
2.3) 编辑 configure.ac
$ vi configure.ac
AC_INIT(helloworld.c)
AM_INIT_AUTOMAKE(helloworld, 1.0)
AC_PROG_CC
AC_OUTPUT(Makefile)
3) 生成 aclocal.m4 和 configure
3.1) 生成 aclocal.m4
$ aclocal
3.2) 生成 configure
$ autoconf
4) 编写 Makefile.am
$ vi Makefile.am
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=helloworld
helloworld_SOURCES=helloworld.c
5) 生成 Makefile
$ automake --add-missing
6) 测试
$ ./configure
$ make
$ ./helloworld
2017年9月17日星期日
Git - 免户口与密码重复输入
1) 产生公钥 (id_rsa.pub) 与私钥 (id_rsa), 放到 .ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "钥匙名字"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/UID/.ssh/id_rsa): id_rsa 文件名
Enter passphrase (empty for no passphrase): 设置密码
Enter same passphrase again: 重复以上密码
2) 将公钥放去 github
登录 https://github.com/settings/ssh
添加 ~/.ssh/id_rsa.pub 公钥内容
3) 测试
$ git clone git@github.com:户口名/仓库名.git
* 第一次用 ssh 连接 github.com 会要求输入以上设置的密码.
4) 其它
之前已经 clone 的, 可修改 remote url
$ git remote set-url origin git@github.com:户口名/仓库名.git
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "钥匙名字"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/UID/.ssh/id_rsa): id_rsa 文件名
Enter passphrase (empty for no passphrase): 设置密码
Enter same passphrase again: 重复以上密码
2) 将公钥放去 github
登录 https://github.com/settings/ssh
添加 ~/.ssh/id_rsa.pub 公钥内容
3) 测试
$ git clone git@github.com:户口名/仓库名.git
* 第一次用 ssh 连接 github.com 会要求输入以上设置的密码.
4) 其它
之前已经 clone 的, 可修改 remote url
$ git remote set-url origin git@github.com:户口名/仓库名.git
2017年9月10日星期日
Git - branch / tag
1) 分支管理 (branch)
$ git branch 查看分支
$ git branch <name> 创建分支
$ git checkout <name> 切换分支
$ git checkout -b <name> 创建 + 切换分支
$ git merge <name> 合拼分支
$ git branch -d <name> 删除分支
2) 操作修改和版本穿梭
$ git log
$ git reset HEAD 暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响
$ git reset --hard <revision> 重置至某一版本 (强制,暂存区和工作区均重置)
$ git reset --hard HEAD^, 则回滚为上一版本
$ git reflog 显示操作的日志
$ git rm --cached <file> 会直接从暂存区删除文件,工作区则不做出改变
$ git checkout -- <file1> <file2> 会将文件在工作区的修改撤销
$ git checkout HEAD . 或者 git checkout HEAD <file>
会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。
这个命令是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动
3) 标签管理 (tag)
$ git tag 查看标签
$ git tag <name> <commit_id> 创建标签, 若无commit id 默认当前
$ git tag -a <name> -m <msg> 创建标签, 且添加标签信息
$ git tag -s <name> -m <msg> 创建签名标签,且添加标签信息
$ git tag -d <name> -m <msg> 删除标签
$ git show <name> 查看标签具体信息
$ git push origin <name> 推送某个标签至远程
$ git push origin --tags 推送所有标签至远程
$ git branch 查看分支
$ git branch <name> 创建分支
$ git checkout <name> 切换分支
$ git checkout -b <name> 创建 + 切换分支
$ git merge <name> 合拼分支
$ git branch -d <name> 删除分支
2) 操作修改和版本穿梭
$ git log
$ git reset HEAD 暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响
$ git reset --hard <revision> 重置至某一版本 (强制,暂存区和工作区均重置)
$ git reset --hard HEAD^, 则回滚为上一版本
$ git reflog 显示操作的日志
$ git rm --cached <file> 会直接从暂存区删除文件,工作区则不做出改变
$ git checkout -- <file1> <file2> 会将文件在工作区的修改撤销
$ git checkout HEAD . 或者 git checkout HEAD <file>
会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。
这个命令是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动
3) 标签管理 (tag)
$ git tag 查看标签
$ git tag <name> <commit_id> 创建标签, 若无commit id 默认当前
$ git tag -a <name> -m <msg> 创建标签, 且添加标签信息
$ git tag -s <name> -m <msg> 创建签名标签,且添加标签信息
$ git tag -d <name> -m <msg> 删除标签
$ git show <name> 查看标签具体信息
$ git push origin <name> 推送某个标签至远程
$ git push origin --tags 推送所有标签至远程
2017年9月9日星期六
Git 历史记录清除
清除所有文件的历史记录
以下已试过了..
$ git checkout --orphan latest_branch
$ git add -A
$ git commit -am "Clear History Rec"
$ git branch -D master
$ git branch -m master
$ git push -f origin master
以下已试过了..
$ git checkout --orphan latest_branch
$ git add -A
$ git commit -am "Clear History Rec"
$ git branch -D master
$ git branch -m master
$ git push -f origin master
2017年9月6日星期三
Git 开发基本应用
1) 先在 https://github.com 用自己的户口名 user, 创建一个软件库 gittest
软件库网址 https://github.com/user/gittest
2) 下载 gittest
$ git clone https://github.com/user/gittest
3) 在 gittest 里增加 / 修改文件
$ cd gittest
$ echo "# gittest" >> text.txt
4) git status 会告知你可以上传的文件
5) 新的文件 / 更改文件上传到分支 (master 是你的软件库主分支)
$ git add text.txt text2.txt
$ git commit -m "<message>"
$ git push origin master
6) 撤除文件, 然后也同步到分支去
$ rm text.txt
$ git rm text.txt
$ git commit -m "<message>"
$ git push origin master
7) 如果要更新本地软件库 (如果分支已更新, 本地的也可以更新)
$ git pull origin master
8) 其它
# 在本地初始化文件夹 (会在文件夹中里产生 .git)
$ git init
# 更换或增加外部网址
$ git remote -v
$ git remote add origin <url>
$ git remote set-url origin <url>
软件库网址 https://github.com/user/gittest
2) 下载 gittest
$ git clone https://github.com/user/gittest
3) 在 gittest 里增加 / 修改文件
$ cd gittest
$ echo "# gittest" >> text.txt
4) git status 会告知你可以上传的文件
5) 新的文件 / 更改文件上传到分支 (master 是你的软件库主分支)
$ git add text.txt text2.txt
$ git commit -m "<message>"
$ git push origin master
6) 撤除文件, 然后也同步到分支去
$ rm text.txt
$ git rm text.txt
$ git commit -m "<message>"
$ git push origin master
7) 如果要更新本地软件库 (如果分支已更新, 本地的也可以更新)
$ git pull origin master
8) 其它
# 在本地初始化文件夹 (会在文件夹中里产生 .git)
$ git init
# 更换或增加外部网址
$ git remote -v
$ git remote add origin <url>
$ git remote set-url origin <url>
2017年8月4日星期五
Gnome Shell Extensions - Auto OVPN
Auto OVPN
https://github.com/yomun/auto-ovpn
https://extensions.gnome.org/extension/1270/auto-ovpn/
第一个自行开发的 Gnome Shell Extensions
用于方便在 Linux 容易用上 VPN Gate
因每次去 VPN Gate 网站下载 ovpn 文件实在太麻烦了,
同时也不知道哪一个可以用
这小工具可以解决这问题, 而且全自动, 只要启动了 VPN 就可以了.
如果 VPN 有问题连接不到会自动试用其它的 ovpn,
一直试到有一个 VPN 能用为止
同时也显示现在的 Public IP 在 panel 上
2017年7月14日星期五
Gnome Shell Extension 制作基本知识
1) 基本指令, 输入 Alt + F2 打开命令模式
- 再输入 lg, 打开 Looking Glass
- 再输入 r, 重启 Gnome Shell
2) 在 Looking Glass - Evaluator 输入以下看看
# 会弹出信息
Main.notify("Test");
Main.notifyError("Error");
# 会在 Gnome Logs 记录信息
global.log("Test");
global.logError("Error");
3) Gnome Shell Extensions 存放的位置
$ cd ~/.local/share/gnome-shell/extensions
$ cd /usr/share/gnome-shell/extensions
4) 制作 Gnome Shell Extension 的命令
# 创建一个 Gnome Shell Extension
$ gnome-shell-extension-tool -c
$ gnome-shell-extension-tool -e Hello@test.home
$ gnome-shell-extension-tool -d Hello@test.home
$ gnome-shell-extension-tool -h
5) Debug 工具 (不断重启 Gnome Shell 来测试程序, 再看 Logs 有没错误)
可以打开 Logs 检查以下程序是否有错误, 搜索 Hello@test.home
6) 编写
# 基本有3个文件 extension.js, metadata.json, stylesheet.css
# metadata.json 记录步骤 4 创建时所输入的资料
$ cd ~/.local/share/gnome-shell/extensions/Hello@test.home
$ gedit extension.js
const Main = imports.ui.main;
log("extension-load");
Main.notify("extension-load");
function init() {
log("extension-init");
Main.notify("extension-init");
}
function enable() {
log("extension-enable");
Main.notify("extension-enable");
}
function disable() {
log("extension-disable");
Main.notify("extension-disable");
}
7) 其它
# Gnome Shell Extension 所有设置备份
$ sudo dconf dump /org/gnome/shell/extensions/
- 再输入 lg, 打开 Looking Glass
- 再输入 r, 重启 Gnome Shell
2) 在 Looking Glass - Evaluator 输入以下看看
# 会弹出信息
Main.notify("Test");
Main.notifyError("Error");
# 会在 Gnome Logs 记录信息
global.log("Test");
global.logError("Error");
3) Gnome Shell Extensions 存放的位置
$ cd ~/.local/share/gnome-shell/extensions
$ cd /usr/share/gnome-shell/extensions
4) 制作 Gnome Shell Extension 的命令
# 创建一个 Gnome Shell Extension
$ gnome-shell-extension-tool -c
$ gnome-shell-extension-tool -e Hello@test.home
$ gnome-shell-extension-tool -d Hello@test.home
$ gnome-shell-extension-tool -h
5) Debug 工具 (不断重启 Gnome Shell 来测试程序, 再看 Logs 有没错误)
可以打开 Logs 检查以下程序是否有错误, 搜索 Hello@test.home
6) 编写
# 基本有3个文件 extension.js, metadata.json, stylesheet.css
# metadata.json 记录步骤 4 创建时所输入的资料
$ cd ~/.local/share/gnome-shell/extensions/Hello@test.home
$ gedit extension.js
const Main = imports.ui.main;
log("extension-load");
Main.notify("extension-load");
function init() {
log("extension-init");
Main.notify("extension-init");
}
function enable() {
log("extension-enable");
Main.notify("extension-enable");
}
function disable() {
log("extension-disable");
Main.notify("extension-disable");
}
7) 其它
# Gnome Shell Extension 所有设置备份
$ sudo dconf dump /org/gnome/shell/extensions/
2017年4月10日星期一
Linux - SQL Server (docker)
- 还没有数据库
$ docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Yukon900
- 已有数据库 DemoData (建议用这个)
$ docker build -t node-web-app .
$ docker run --name mssql -e ACCEPT_EULA=Y -e SA_PASSWORD=Yukon900 -p 1433:1433 -p 8080:8080 -d node-web-app
$ docker exec -it mssql /bin/bash /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Yukon900
http://localhost:8080
可以下载 DBeaver 连接 MSSQL
http://dbeaver.jkiss.org/
Host: localhost
Port: 1433
Username: sa
Password: Yukon900
2017年4月8日星期六
Eclipse Che 服务端
服务端安装了 Eclipse Che
只要能上网, 到哪里都可用浏览器连接上服务端 Eclipse, 继续编写与开发程序
https://www.eclipse.org/che/docs/setup/getting-started/
1) Docker 安装
http://jasonmun.blogspot.my/2016/05/linux-docker.html
2) 测试 Docker
$ su
$ systemctl status docker
$ docker info
$ docker run hello-world
3) 准备数据存放位置和端口
$ mkdir /home/username/eclipse_data
防火壁要将以下端口打开
8080 - Tomcat 端口
8000 - 服务端 Debug 用,
32768-65535 间 - Docker 和 Eclipse Che 代理用
4) 安装与开启 Eclipse Che 服务
$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v /home/username/eclipse_data:/data -e CHE_HOST=192.168.0.100 eclipse/che start
如启动不了, 用这行检查 (也可以暂时关闭防火壁作测试)..
$ docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock -v /home/username/eclipse_data:/data -e CHE_HOST=192.168.0.100 eclipse/che info --network
5) 从服务端浏览 http://172.17.0.1:8080/ 或 客户端浏览 http://192.168.0.100:8080/
6) 其它
$ docker run <DOCKER_OPTIONS> eclipse/che stop
$ docker run <DOCKER_OPTIONS> eclipse/che restart
$ docker run <DOCKER_OPTIONS> eclipse/che:<version> start
如果在 Windows 用 boot2docker, 可将系统变数 `%userprofile%` 设置为 `:/data`
$ docker run <DOCKER_OPTIONS> -v /c/Users/username/che:/data eclipse/che start
2017年4月7日星期五
Atom - github 开发的 Text Editor
Atom 是 github 开发的文本编辑器
支持 Windows / Linux / Mac OS X
https://github.com/atom/atom/releases/
$ sudo add-apt-repository ppa:webupd8team/atom
$ sudo apt-get update
$ sudo apt-get install atom
Bracket - Adobe 的 Web 开发编辑器
Bracket 是 Adobe 开发用于 Web 的编辑器 ( HTML / CSS / Java Script )
支持 Windows / Linux / Mac OSX
https://github.com/adobe/brackets/releases
https://github.com/adobe/brackets/releases/download/release-1.9/Brackets.Release.1.9.64-bit.deb
$ sudo add-apt-repository ppa:webupd8team/brackets
$ sudo apt update
$ sudo apt install brackets
2017年4月5日星期三
GNOME - gedit 插件 - Ruby on Rails 开发
gedit-gmate
$ sudo apt-get update
$ sudo apt-get install gedit-gmate
https://launchpad.net/~ubuntu-on-rails/+archive/ubuntu/ppa/+packages
https://launchpad.net/~ubuntu-on-rails/+archive/ubuntu/ppa/+packages
2017年4月3日星期一
Ubuntu - ubuntu-make 开发工具下载
1. 先安装 Ubuntu Make
https://github.com/ubuntu/ubuntu-make
$ sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
$ sudo apt-get update
$ sudo apt-get install ubuntu-make
2. 各开发 IDE 下载
$ sudo umake android android-ndk
$ sudo umake android android-studio
$ sudo umake dart editor
$ sudo umake go go-lang
$ sudo umake ide arduino
$ sudo umake ide eclipse
$ sudo umake ide idea
$ sudo umake ide idea-ultimate
$ sudo umake ide phpstorm
$ sudo umake ide pycharm
$ sudo umake ide pycharm-educational
$ sudo umake ide pycharm-professional
$ sudo umake ide rubymine
$ sudo umake ide webstorm
$ sudo umake games stencyl
$ sudo umake games unity3d
$ sudo umake web firefox-dev
$ sudo umake web visual-studio-code
3. 卸载
$ sudo umake games unity3d --remove
2017年4月2日星期日
GO 语言
GO 语言
https://golang.org
$ su
$ tar -C /usr/local -xzf go1.8.linux-amd64.tar.gz
$ gedit /etc/profile
export PATH=$PATH:/usr/local/go/bin
2017年3月1日星期三
Ubuntu - SQL Server
1. 公钥
$ curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
2. 注册 Microsoft SQL Server Ubuntu 存储库
$ curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list > /etc/apt/sources.list.d/mssql-server.list
3. 安装 SQL Server on Linux
$ sudo apt update
$ sudo apt install -y mssql-server
4. 设置
$ sudo /opt/mssql/bin/sqlservr-setup
5. 查看
$ systemctl status mssql-server
$ curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
2. 注册 Microsoft SQL Server Ubuntu 存储库
$ curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list > /etc/apt/sources.list.d/mssql-server.list
3. 安装 SQL Server on Linux
$ sudo apt update
$ sudo apt install -y mssql-server
4. 设置
$ sudo /opt/mssql/bin/sqlservr-setup
5. 查看
$ systemctl status mssql-server
2017年2月8日星期三
MySQL - 数据备份与恢复
备份
[options]: -h主机名 -P端口 -u用户名 -p密码
1. 备份 MySQL 数据库
$ mysqldump [options] 数据库名 > backup.sql
或
$ mysqldump [options] -database 数据库名 > backup.sql
2. 备份 MySQL 数据库 + 删除表 ( --add-drop-table )
$ mysqldump --add-drop-table [options] -database 数据库名 > backup.sql
3. 直接将 MySQL 数据库 压缩备份 ( gzip )
$ mysqldump [options] -database 数据库名 | gzip > backup.sql.gz
4. 备份 MySQL 数据库里的表
$ mysqldump [options] 数据库名 表名1 表名2 > backup.sql
5. 同时备份多个 MySQL 数据库
$ mysqldump [options] -databases 数据库名1 数据库名2 数据库名3 > multi_backup.sql
6. 备份数据库结构 ( --no-data )
$ mysqldump --no-data [options] -databases 数据库名1 数据库名2 数据库名3 > struct.sql
7. 备份所有数据库 ( --all-databases )
$ mysqldump [options] --all-databases > all_backup.sql
恢复
1. 还原 MySQL 数据库
$ mysql [options] 数据库名 < backup.sql
2. 还原压缩的 MySQL 数据库
$ gunzip < backup.sql.gz | mysql [options] 数据库名
3. 将数据库转移到新服务器
$ mysqldump [options] 数据库名 | mysql --host=*.*.*.* -C 数据库名
4. 在 mysqldump 中使用 --master-data 和 --single-transaction
--master-data=2 : 会记录 binlog 文件和 position 的信息
--single-transaction : 会将隔离级别设置成 repeatable-commited
5. 导入数据库
常用 source 命令, 用 use 进入到某个数据库, mysql> source C:\test.sql
6. 查看 binlog 日志
$ mysqlbinlog 日志名 | more
7. general_log - 记录数据库的任何操作
- 查看 general_log 的状态和位置 : show variables like "general_log%",
- 开启 general_log : set global general_log=on
是指备份后所有的更改将会保存到 bin-log.000002 二进制文件中
2. 在 数据库名 库的 t_student 表中增加两条记录, 然后执行 flush logs 命令
这时将会产生一个新的二进制日志文件 bin-log.000003,
bin-log.000002 则保存了全备份过后的所有更改,
既增加的记录操作也保存于 bin-log.00002 中
3. 再 数据库名 库中的 a 表中增加 2 条记录, 然后误删除 a 和 t_student 表
以上操作也记录在 bin-log.000003 中
[options]: -h主机名 -P端口 -u用户名 -p密码
1. 备份 MySQL 数据库
$ mysqldump [options] 数据库名 > backup.sql
或
$ mysqldump [options] -database 数据库名 > backup.sql
2. 备份 MySQL 数据库 + 删除表 ( --add-drop-table )
$ mysqldump --add-drop-table [options] -database 数据库名 > backup.sql
3. 直接将 MySQL 数据库 压缩备份 ( gzip )
$ mysqldump [options] -database 数据库名 | gzip > backup.sql.gz
4. 备份 MySQL 数据库里的表
$ mysqldump [options] 数据库名 表名1 表名2 > backup.sql
5. 同时备份多个 MySQL 数据库
$ mysqldump [options] -databases 数据库名1 数据库名2 数据库名3 > multi_backup.sql
6. 备份数据库结构 ( --no-data )
$ mysqldump --no-data [options] -databases 数据库名1 数据库名2 数据库名3 > struct.sql
7. 备份所有数据库 ( --all-databases )
$ mysqldump [options] --all-databases > all_backup.sql
恢复
1. 还原 MySQL 数据库
$ mysql [options] 数据库名 < backup.sql
2. 还原压缩的 MySQL 数据库
$ gunzip < backup.sql.gz | mysql [options] 数据库名
3. 将数据库转移到新服务器
$ mysqldump [options] 数据库名 | mysql --host=*.*.*.* -C 数据库名
4. 在 mysqldump 中使用 --master-data 和 --single-transaction
--master-data=2 : 会记录 binlog 文件和 position 的信息
--single-transaction : 会将隔离级别设置成 repeatable-commited
5. 导入数据库
常用 source 命令, 用 use 进入到某个数据库, mysql> source C:\test.sql
6. 查看 binlog 日志
$ mysqlbinlog 日志名 | more
7. general_log - 记录数据库的任何操作
- 查看 general_log 的状态和位置 : show variables like "general_log%",
- 开启 general_log : set global general_log=on
增量备份
1. 首先做一次完整备份
$ mysqldump [options] --single-transaction --master-data=2 数据库名 > backup.sql
在 backup.sql 文件中可看到
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;
1. 首先做一次完整备份
$ mysqldump [options] --single-transaction --master-data=2 数据库名 > backup.sql
在 backup.sql 文件中可看到
-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;
是指备份后所有的更改将会保存到 bin-log.000002 二进制文件中
2. 在 数据库名 库的 t_student 表中增加两条记录, 然后执行 flush logs 命令
这时将会产生一个新的二进制日志文件 bin-log.000003,
bin-log.000002 则保存了全备份过后的所有更改,
既增加的记录操作也保存于 bin-log.00002 中
3. 再 数据库名 库中的 a 表中增加 2 条记录, 然后误删除 a 和 t_student 表
以上操作也记录在 bin-log.000003 中
恢复数据 + binlog 日志
1. 首先导入全备数据
1. 首先导入全备数据
$ mysql [options] < backup.sql
2. 恢复 binlog 日志 bin-log.000002
$ mysqlbinlog bin-log.000002 | mysql [options]
或
$ mysql [options] < bin-log.000002
$ mysql [options] < bin-log.000002
3. 恢复 binlog 日志 bin-log.000003
在 general_log 中找到误删除的时间点,
然后更加对应的时间点到 bin-log.000003 中找到相应的 position 点,
需要恢复到误删除的前面一个 position 点
可以用如下参数来控制 binlog 的区间
开始点 --start-position
结束点 --stop-position
开始时间 --start-date
结束时间 --stop-date
找到恢复点后, 既可以开始恢复
$ mysqlbinlog --start-position=208 bin-log.000003 | mysql [options]
MariaDB / MySQL - Binary Logs 设置
1. 准备存 bin-log 的地方
$ mkdir -p /var/log/mariadb/bin-log
2. 编辑 /etc/my.cnf (my.ini)
[mysqld]
log_bin=/var/log/mariadb/bin-log
expire_logs_days = 7
3. 启动 MariaDB
$ systemctl start mariadb
4. 查看数据库关于 Binary Log 设置
检查 Binary Logs 是否开启
$ mysql -h主机名 -P端口 -u用户名 -p密码
MariaDB> show variables like 'log_bin';
MariaDB> show binary logs;
MariaDB> show master logs;
重设
MariaDB> reset master;
(在slave上, 用 reset slave, 之前应 stop slave, 之后再 start slave)
清理
MariaDB> purge binary logs to 'log-bin.000001';
MariaDB> purge binary logs before '2011-05-28 12:05:38';
5. 查看 Binary Log
MariaDB> show master status;
MariaDB> show binlog events;
MariaDB> quit;
$ cd /var/log/mariadb/bin-log
全备份
$ mysqlbinlog log-bin.000001 > tmp.log
部分备份
# --start-datetime / --stop-datetime
$ mysqlbinlog --start-datetime='2015-07-01 00:00:00' --stop-datetime='2016-07-15 00:00:00' log-bin.000001 > tmp.log
$ mysqlbinlog --start-datetime='2015-07-01 00:00:00' log-bin.000001 > tmp.log
$ mysqlbinlog --stop-datetime='2016-07-15 00:00:00' log-bin.000001 > tmp.log
# --start-position / --stop-position
$ mysqlbinlog --start-position='10001' --stop-position='10002' log-bin.000001 > tmp.log
$ mysqlbinlog --start-position='10001' log-bin.000001 > tmp.log
$ mysqlbinlog --stop-position='10002' log-bin.000001 > tmp.log
6. 关闭与开启 Binary Logs
关闭
MariaDB> SET sql_log_bin=0;
MariaDB> flush logs;
恢复
$ mysql -h主机名 -P端口 -u用户名 -p密码 < tmp.log
开启
MariaDB> SET sql_log_bin=1;
$ mkdir -p /var/log/mariadb/bin-log
2. 编辑 /etc/my.cnf (my.ini)
[mysqld]
log_bin=/var/log/mariadb/bin-log
expire_logs_days = 7
3. 启动 MariaDB
$ systemctl start mariadb
4. 查看数据库关于 Binary Log 设置
检查 Binary Logs 是否开启
$ mysql -h主机名 -P端口 -u用户名 -p密码
MariaDB> show variables like 'log_bin';
MariaDB> show binary logs;
MariaDB> show master logs;
重设
MariaDB> reset master;
(在slave上, 用 reset slave, 之前应 stop slave, 之后再 start slave)
清理
MariaDB> purge binary logs to 'log-bin.000001';
MariaDB> purge binary logs before '2011-05-28 12:05:38';
5. 查看 Binary Log
MariaDB> show master status;
MariaDB> show binlog events;
MariaDB> quit;
$ cd /var/log/mariadb/bin-log
全备份
$ mysqlbinlog log-bin.000001 > tmp.log
部分备份
# --start-datetime / --stop-datetime
$ mysqlbinlog --start-datetime='2015-07-01 00:00:00' --stop-datetime='2016-07-15 00:00:00' log-bin.000001 > tmp.log
$ mysqlbinlog --start-datetime='2015-07-01 00:00:00' log-bin.000001 > tmp.log
$ mysqlbinlog --stop-datetime='2016-07-15 00:00:00' log-bin.000001 > tmp.log
# --start-position / --stop-position
$ mysqlbinlog --start-position='10001' --stop-position='10002' log-bin.000001 > tmp.log
$ mysqlbinlog --start-position='10001' log-bin.000001 > tmp.log
$ mysqlbinlog --stop-position='10002' log-bin.000001 > tmp.log
6. 关闭与开启 Binary Logs
关闭
MariaDB> SET sql_log_bin=0;
MariaDB> flush logs;
恢复
$ mysql -h主机名 -P端口 -u用户名 -p密码 < tmp.log
开启
MariaDB> SET sql_log_bin=1;
2017年1月28日星期六
Subnet Mask
子网掩码 (Subnet Mask) 决定了能设置内网 IP 的数量
以下假设 IP 为 192.168.0.1
用不同的 IP和子网掩码, 其子网范围会有所变动
在子网掩码为 255.255.254.0/23, 其
IP 范围 为
192.168.0.0 - 192.168.0.255 和 192.168.1.1 - 192.168.1.254, 广播为 192.168.1.255
192.168.2.0 - 192.168.2.255 和 192.168.3.1 - 192.168.3.254, 广播为 192.168.3.255
192.168.4.0 - 192.168.4.255 和 192.168.5.1 - 192.168.5.254, 广播为 192.168.5.255
以下假设 IP 为 192.168.0.1
用不同的 IP和子网掩码, 其子网范围会有所变动
在子网掩码为 255.255.254.0/23, 其
IP 范围 为
192.168.0.0 - 192.168.0.255 和 192.168.1.1 - 192.168.1.254, 广播为 192.168.1.255
192.168.2.0 - 192.168.2.255 和 192.168.3.1 - 192.168.3.254, 广播为 192.168.3.255
192.168.4.0 - 192.168.4.255 和 192.168.5.1 - 192.168.5.254, 广播为 192.168.5.255
子网掩码
|
IP 范围 (如 IP 为 192.168.0.1)
|
广播
|
共 (可用 IP)
| |
| 255.255.0.0 | /16 | 192.168.0.1 - 192.168.255.254 | 192.168.255.255 |
65534
|
| 255.255.128.0 | /17 | 192.168.0.1 - 192.168.127.254 | 192.168.127.255 |
32766
|
| 255.255.192.0 | /18 | 192.168.0.1 - 192.168.63.254 | 192.168.63.255 |
16382
|
| 255.255.224.0 | /19 | 192.168.0.1 - 192.168.31.254 | 192.168.31.255 |
8190
|
| 255.255.240.0 | /20 | 192.168.0.1 - 192.168.15.254 | 192.168.15.255 |
4094
|
| 255.255.248.0 | /21 | 192.168.0.1 - 192.168.7.254 | 192.168.7.255 |
2046
|
| 255.255.252.0 | /22 | 192.168.0.1 - 192.168.3.254 | 192.168.3.255 |
1022
|
| 255.255.254.0 | /23 | 192.168.0.1 - 192.168.1.254 | 192.168.1.255 |
510
|
| 255.255.255.0 | /24 | 192.168.0.1 - 192.168.0.254 | 192.168.0.255 |
254
|
| 255.255.255.128 | /25 | 192.168.0.1 - 192.168.0.126 | 192.168.0.127 |
126
|
| 255.255.255.192 | /26 | 192.168.0.1 - 192.168.0.62 | 192.168.0.63 |
62
|
| 255.255.255.224 | /27 | 192.168.0.1 - 192.168.0.30 | 192.168.0.31 |
30
|
| 255.255.255.240 | /28 | 192.168.0.1 - 192.168.0.14 | 192.168.0.15 |
14
|
| 255.255.255.248 | /29 | 192.168.0.1 - 192.168.0.6 | 192.168.0.7 |
6
|
| 255.255.255.252 | /30 | 192.168.0.1 - 192.168.0.2 | 192.168.0.3 |
2
|
2017年1月21日星期六
Let's Encrypt - 免费 HTTPS
不管用哪一个 Web Server,
都要在防火壁打开端口 80 / 8080 和 443 / 8443
路由器 (router modem) 也要做 Port Forward 端口转向
Apache
http://jasonmun.blogspot.my/2017/01/https-lets-encrypt.html
Nginx
http://jasonmun.blogspot.my/2017/01/lets-encrypt-nginx-https.html
Lighttpd
http://jasonmun.blogspot.my/2017/01/lets-encrypt-lighttpd-https.html
Tomcat
http://jasonmun.blogspot.my/2017/01/lets-encrypt-tomcat-https.html
IIS
http://jasonmun.blogspot.my/2017/01/lets-encrypt-iis-https.html
Apache
http://jasonmun.blogspot.my/2017/01/https-lets-encrypt.html
Nginx
http://jasonmun.blogspot.my/2017/01/lets-encrypt-nginx-https.html
Lighttpd
http://jasonmun.blogspot.my/2017/01/lets-encrypt-lighttpd-https.html
Tomcat
http://jasonmun.blogspot.my/2017/01/lets-encrypt-tomcat-https.html
IIS
http://jasonmun.blogspot.my/2017/01/lets-encrypt-iis-https.html
订阅:
博文 (Atom)





