使用 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 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2
monkey

Cool!

个人喜欢在小项目中使用 envoy 同步代码

7年前 评论

mac-auto-deploy . root@11.12.23.12:/Library/WebServer/Documents/laravel 执行的时候 会找不到命令呀 什么情况

4年前 评论
宋祎超 (楼主) 4年前
Reliable (作者) 4年前
宋祎超 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!