lsyncd —— 多机器实时同步文件神器

lsyncd 是一个支持实时、双向、多机器的多模式文件同步工具。

使用 Lua 语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过 rsync 去差异同步,达到实时的效果。

安装

在源文件服务器上安装:

yum -y install lsyncd

更改 Linux 系统的用户名和主机名

可能系统安装时的默认用户名我们不喜欢,但已经在该用户上已经配置了很多东西,所以我们只能修改用户名、而非新建一个。

修改主机名

假设此处我们要修改的新主机名为 hello

  • 修改 hostname 文件

    sudo vim /etc/hostname
    

    将内容改为 hello/etc/hostname 文件修改了需要重启才会生效。

  • 用 hostname 修改当前会话的主机名

    hostname hello
    
  • 修改 hosts 文件

    sudo vim /etc/hosts
    

    将内容修改为类似如下:

    127.0.0.1 localhost
    127.0.0.1 hello
    

Linux 命令 —— scp 远程文件拷贝

scp 是 secure copy 的缩写,scp 是 Linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。Linux 的 scp 命令可以在 Linux 服务器之间复制文件和目录。

命令格式

scp [可选参数] file_source file_target

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

gops —— Go 程序诊断分析工具

GitHub: https://github.com/google/gops

一个用于列出和诊断分析系统中正在运行的 Go 程序的命令行工具

安装

go get -u github.com/google/gops

命令帮助

执行 gops help 查看帮助文档:

gops is a tool to list and diagnose Go processes.

	gops <cmd> <pid|addr> ...
	gops <pid> # displays process info

Commands:
    stack       	Prints the stack trace.
    gc          	Runs the garbage collector and blocks until successful.
    setgc	        Sets the garbage collection target percentage.
    memstats    	Prints the allocation and garbage collection stats.
    version     	Prints the Go version used to build the program.
    stats       	Prints the vital runtime stats.
    help        	Prints this help text.

Profiling commands:
    trace       	Runs the runtime tracer for 5 secs and launches "go tool trace".
    pprof-heap  	Reads the heap profile and launches "go tool pprof".
    pprof-cpu   	Reads the CPU profile and launches "go tool pprof".


All commands require the agent running on the Go process.
Symbol "*" indicates the process runs the agent.

定时备份 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