目录

使用rsync同步本地代码到开发机/服务器

之前有想过写这样的一篇文章,但是和其他人的东西没有太多差别就没有去写,直到今天在新的mac上同步自己之前的app和配置的时候,才来写这个文章,接下来步入正题,直接写安装步骤吧。

安装brew

brew是一个mac上的软件管理包,可以理解为yum之于Linux,具体的解释可移步Homebrew ,这里有详细的介绍,安装命令,下面的是官方的命令,放心操作。

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装ssh-copy-id,fswatch

这儿要分步操作哦

1
2
brew install ssh-copy-id
brew install fswatch

同步自己的ssh-key到开发机/服务器

1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@自己的机器

这儿需要先生成ssh-key,如果没有ssh-key,就执行,执行之后直接按3次回车。

1
ssh-keygen -t rsa -C "songyichao74@gmail.com"

编辑同步脚本

编辑一个可编辑的bin目录,sudo vim /opt/local/bin/mac-auto-deploy,或者 sudo vim /usr/local/bin/mac-auto-deploy( 这儿我没有这个 /opt/local/bin/目录,就直接在/usr/local/bin/这个目录下写这个脚本)。将下面的内容复制到mac-auto-deploy 中,这个脚本可以指定相应的目录是否需要同步,如果你不需要同步某个目录,在--delete --progress 后面添加 --exclude='storage/logs' 这个选项这个目录要写对应的相对路径。我这儿过滤掉了开发机上的日志目录,方便有问题的时候查case。亲测有效,

1
2
3
4
5
6
7
8
9
#======
#!/bin/sh

local=$1
remote=$2

cd "$local"  &&
fswatch . |xargs  -n1 -I{} rsync -aztH --exclude .git --exclude .sass-cache --exclude .idea  --delete --progress --exclude='storage/logs' --rsh='ssh -l root  -p22' . $remote
#======

运行命令

首先要进入自己要同步的目录然后执行代码,在这儿举个例子吧。

1
mac-auto-deploy . root@11.12.23.12:/Library/WebServer/Documents/laravel

root@11.12.23.12 替换为你的服务器登录账号和地址 ,/Library/WebServer/Documents/laravel替换为你的开发机要同步的项目路径。

设置命令别名

这个命令最后写完可能会巨长,但是我们还总是要执行,会感到很烦。所以这里,我提一下别名这个东西,很简单,但是要写对地方。

1
alias syc_dev_laravel='mac-auto-deploy . root@11.12.23.12:/Library/WebServer/Documents/laravel'

只要这么写就OK了。但是要注意些的地方,如果你使用的命令行是oh-my-zsh,就vim ~/.zshrc,如果使用的是bash,就vim ~ /.bash_profile,如果你写的文件不对,那就只能每次关闭终端后都执行一次source了;还有等号前后不能出现空格;最后,就需要来一个source了,source相应的你编辑的文件就好。