使用 rsync 同步本地代码到开发机 / 服务器
之前有想过写这样的一篇文章,但是和其他人的东西没有太多差别就没有去写,直到今天在新的mac上同步自己之前的app和配置的时候,才来写这个文章,接下来步入正题,直接写安装步骤吧。
1.安装brew
brew是一个mac上的软件管理包,可以理解为yum之于Linux,具体的解释可移步Homebrew,这里有详细的介绍,安装命令,下面的是官方的命令,放心操作。/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.安装ssh-copy-id,fswatch
这儿要分步操作哦brew install ssh-copy-id
brew install fswatch
3.同步自己的ssh-key到开发机/服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@自己的机器
这儿需要先生成ssh-key,如果没有ssh-key,就执行,执行之后直接按3次回车。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。亲测有效,
#======
#!/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]mac-auto-deploy . root@11.12.23.12:/Library/WebServer/Documents/laravel[/shell]
"root@11.12.23.12" 替换为你的服务器登录账号和地址 ,“/Library/WebServer/Documents/laravel”替换为你的开发机要同步的项目路径。
6.设置命令别名
这个命令最后写完可能会巨长,但是我们还总是要执行,会感到很烦。所以这里,我提一下别名这个东西,很简单,但是要写对地方。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相应的你编辑的文件就好。
原文链接地址
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: