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

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

1.安装brew

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

// SHELL CODE

2.安装ssh-copy-id,fswatch

这儿要分步操作哦

// SHELL CODE

brew install ssh-copy-id
brew install fswatch

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

// SHELL CODE

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

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

// SHELL CODE

ssh-keygen -t rsa -C “songyichao74@gmail.com”

4.编辑同步脚步

编辑一个可编辑的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。亲测有效,

// SHELL CODE

#======
#!/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
#======

5.运行命令

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

// SHELL CODE

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

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

6.设置命令别名

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

// SHELL CODE

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相应的你编辑的文件就好。