分类 tools 下的文章

系统:Ubuntu 20.04.4 LTS

软件:dnsmasq

安装dnsmasq

apt install dnsmasq -y

操作dnsmasq的常用命令


service dnsmasq status # 查看状态
service dnsmasq stop # 停止
service dnsmasq restart # 重启
service dnsmasq start # 启动

关闭systemd-resolve

因为systemd-resolve服务会占用53端口,如果我们的DNS服务要绑定到0.0.0.0上,就会有冲突。

systemctl stop systemd-resolved # 关闭systemd-resolve

systemctl disable systemd-resolved  # 也可以用mask完全屏蔽

修改配置

安装好dnsmasq之后,默认的配置在/etc/dnsmasq.conf

创建一个目录,用来放自定义的dnsmasq配置文件

mkdir /data/dnsmasq

创建上级DNS配置文件

touch /data/dnsmasq/resolv.conf

内容如下

nameserver 119.29.29.29
nameserver 114.114.114.114
nameserver 8.8.8.8

创建dnsmasq.d目录,用来存放自定义的配置

mkdir /data/dnsmasq/dnsmasq.d

创建自定义hosts文件

touch /data/dnsmasq/dnsmasq.hosts

之后修改配置文件

# 端口,默认53
port=53


# 上级DNS配置
resolv-file=/data/dnsmasq/resolv.conf

# 开启严格顺序,这样查询上级DNS会从上到下依次查询
strict-order

# 修改监听配置,0.0.0.0允许任何IP访问
listen-address=0.0.0.0

# 自定义host
addn-hosts=/data/dnsmasq/dnsmasq.hosts

# 指向自定义配置目录
conf-dir=/data/dnsmasq/dnsmasq.d,*.conf

创建解析

解析说明:

# SRV 记录
#srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]
# A, AAAA 和 PTR 记录 
#host-record=<name>[,<name>....],[<IPv4-address>],[<IPv6-address>][,<TTL>]
# TXT 记录
#txt-record=<name>[[,<text>],<text>]
# PTR 记录 
#ptr-record=<name>[,<target>]
#naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
# CNAME 别名记录
#cname=<cname>,<target>[,<TTL>]

比如说我现在需要把test.ibfpig.com通过A记录解析到本地的127.0.0.1

创建一个conf文件,比如ibfpig_com.conf

内容如下:

host-record=test.ibfpig.com,127.0.0.1

比如说我现在需要把*.ibfpig.top这样的泛域名解析到192.168.1.1

就可以追加内容如下:


address=/.ibfpig.top/192.168.1.1


修改配置文件后需要重启服务

步骤

  1. 将云服务挂载为本地磁盘
  2. 创建备份磁盘
  3. 指定时间机器的磁盘为备份磁盘

将云服务挂载为本地磁盘

将云服务挂载为本地磁盘的方案有很多,目前有很多的第三方工具都支持,比如Mountain Duck、S3fs、Goofys,这里选择juicefs,uicefs为对象存储的元数据提供了缓存,能极大的优化对挂载磁盘的list,get等操作。

  1. 注册并登陆juicefs

  2. 创建文件系统,因为我有很多其他的云服务都使用的腾讯云,所以我这里选择的是腾讯云的COS,小伙伴们可以根据自己的需求选择对应的服务

iShot2021-08-31 17.03.35.png

  1. 根据指引,挂载到Mac上

这里可以参考juicefs官网的提示,使用两行命令来操作

WechatIMG414.png

但是这里有个前提条件,就是Mac必须先安装osxfuse,非m1的电脑的安装过程我印象中下载之后直接安装就可以了,m1的系统里需要安装4.1以上的版本,这里可以直接去官网下载安装。

安装好之后,在系统的偏好设置=》安全性与隐私这里会有提示要安装一个什么扩展,点左下角的小锁之后点击安装扩展,之后会有个弹窗提示进入恢复系统,然后提示你点击关机。

关机之后,非m1的系统是cmd+R 进入恢复系统,m1是长按开机键进入恢复系统。进入恢复系统后,选取实用工具->启动安全性实用工具。具体流程可以参考在M1 Macbook上使用SSHFS挂载SFTP协议文件系统

安装好之后就可以继续操作挂载磁盘了。

两行命令中的第一行是下载juicefs,并给予juicefs权限,这里我选择直接克隆juicefs的github代码来编译,因为go1.17之后的版本支持arm系统了,所以我选择了直接编译。

自己克隆+编译的方式很简单:

git clone https://github.com/juicedata/juicefs.git ~/juicefs

cd ~/juicefs

make

chmod +x ./juicefs

之后就会在目录里发现一个juicefs的可执行文件,我们在接下来就进行挂载

cd ~/juicefs

sudo ./juicefs mount xxxxxxxxxxx /jfs 

这里的第二行的命令和juicefs文档上的第二行命令保持一致就可以了,如果需要把这个磁盘挂载到其他目录,可以修改/jfs为其他目录的路径

之后根据提示,输入云服务的相关凭证即可。

在访达中按下快捷键cmd+shift+c就能看到挂载的所有磁盘了。

进入到刚刚挂载的磁盘中,继续创建备份磁盘。

创建备份磁盘

cd /jfs
hdiutil create -size 1t -type SPARSEBUNDLE -fs "HFS+J" "Time Machine.sparsebundle"

这里的1t就是备份磁盘的大小,Time Machine.sparsebundle是文件的名称。

执行完成之后就能看到这个镜像文件了,之后双击打开即可。

iShot2021-08-31 17.37.39.png

之后右键上图红圈位置,可以给磁盘改名字,我这里就叫time

指定时间机器的磁盘为备份磁盘

我们可以进入/Volumes/Time中看一下,如果上一步挂载好了,这里会也会显示出来。

之后执行命令

sudo tmutil setdestination /Volumes/Time

搞定,然后打开系统偏好设置的世界机器看一下吧~

iShot2021-08-31 17.41.20.png

至此,在云服务上备份Mac就搞定了,但是相比于直接那个硬盘来备份,还是有些缺陷的

优缺点

优点:

  1. 不需要单独购买硬盘,不用担心硬盘损坏
  2. 不需要随身携带一个硬盘,有网就能用

缺点:

  1. 必须有稳定的网络才可以
  2. 在网络差的情况下,如果挂载了磁盘,会导致访达卡顿
  3. 需要持续为云服务付费
  4. 如果我电脑崩了,我需要在我电脑上再挂载一次之后才能恢复……

所以,基于以上的优缺点,我想了想,还是买了一块移动硬盘……然后移动硬盘和云服务备份同时使用。

参考文章:

https://kane.mx/posts/2019/using-s3-as-device-for-mac-time-machine-backup/

https://www.wannaexpresso.com/2021/03/12/m1-macbook-sshfs/

可以直接在~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc中添加一个函数进去。

# 开启代理
proxy () {
    export https_proxy=http://127.0.0.1:10086
    export http_proxy=http://127.0.0.1:10001
    export all_proxy=socks5://127.0.0.1:10010
    echo "Proxy on"
}

# 关闭代理
unproxy () {
    export https_proxy
    export http_proxy
    export all_proxy
    echo "Proxy off"
}

之后执行source ~/.zshrc(对应自己的startup files文件)。

需要开启代理的时候就执行proxy,关闭就执行unproxy

生成SSH密钥

ssh-keygen -t rsa -C "your email"

可以通过命名活着放在不同的目录进行区分。

添加新的SSH keys到GitHub中

将新生成的SSH keys添加到你的另一个github帐号(或者公司的gitlab)下的SSH Key中。

清除git的全局设置

如果你之前在设置本地仓库和github连接的时候设置过user.name和user.email,那么你必须首先清楚掉该设置,因为不清楚掉该设置,两个账号在提交资料的时候,验证肯定冲突(只能设置一个全局的user.name和user.email,而你现在有两个账号就对应两个不同的)。

git config --global user.name "your_name"
git config --global user.email  "your_email"

执行ssh-agent让ssh识别新的私钥

分别使用ssh-add将其添加到ssh-agent中。

ssh-add ~/.ssh/id_rsa

注:直接执行ssh-add是临时的,可以执行ssh-add -K将其永久添加

如果出现Could not open a connection to your authentication agent的错误,可以先执行一遍ssh-agent bash,之后在执行ssh-add

配置config文件

看下~/.ssh/目录下有没有config,没有直接新建一个touch config,有的话就直接在后边添加配置。

配置如下:

# 第一个

Host git@one.github.com
 HostName https://github.com
 User git
 IdentityFile ~/.ssh/one/id_rsa

# 第二个

Host git@two.github.com
 HostName https://github.com
 User git
 IdentityFile ~/.ssh/two/id_rsa

# ....第N个

测试

ssh -T git@one.github.com
ssh -T git@two.github.com

clone Git仓库

假设原来的git ssh 地址是git clone git@xxxxxx.com:xxx/test.git

那么新的地址就对应配置config时候不同的密钥对应的HostName,

比如是上边的one,那么,新地址就应该是git clone git@one.xxxxxx.com:xxx/test.git

当然,如果懒得话,不改地址也是可以的,同样可以正常的操作,但是在push到仓库后,可以看见多个头像。

  • 全局安装eslint
  • 安装ESlintAuthFix

cmd + shift + p => install pack => ESlintAuthFix

  • 查看eslint的位置
    which eslint

  • 配置环境变量

    xport PATH=path::$PATH

  • 设置ESlintAuthFix

package setting => ESlintAuthFix => settingDefault


{
  "eslint_path": "path",
  "show_panel": true
}
  • 设置快捷键

{ "keys": ["ctrl+shift+h"], "command": "eslint_auto_fix" }