利用 rsync 进行网站发布(备份、镜像)以及 ssh 免密码登录
Contents
虽然 Visual Studio 和 IIS 有一个 Web Deploy 可以进行 Publish 操作。但这个 publish 实在太不科学了。比如当换一台机器,从 git/svn checkout 代码,修改了上传,这时会进行“整站”覆盖操作;其次,之后每次 publish 之后你会发现很多根本没改动过的 dll 也会一样上传。真是奇 dumb 无比。
上一篇 BLOG 介绍了 Cygwin 设立 sshd 服务,现在我们可以在本地机上通过 ssh 连接到我们的Server。配合 rsync 这个牛逼无比的工具。发布不再蛋疼。
首先,要在Server和本地机上都安装好 rsync 。完成后,我们在本地 cygwin 运行以下命令就O了:
|
|
参数说明
- v 详细输出
- r 递归
- c 使用 checksum 对比文件,关键就是这里,按文件内容生成 checksum 相当就跳过
- z 使用压缩,两机传输的时候使用压缩
- –progress 按每个文件显示传输进度
- -e ssh 这个很重要,指定利用 ssh 进行传输
- –delete 删除Server上本地没有的文件
- 接下来两个参数,左边一个是来源,右边就是目标了。[email protected]的形式就跟 ssh 一样,很好理解。:号后面跟的就是Server上面的文件目标。PS:路径后面带/指定是这个目录下的文件及目录同步过去,如果没有/就是文件夹本身被同步过去。 另外也可以设立 rsync daemon 的模式,不用 ssh 进行同步。只不过 windows 下 rsync daemon 只能绑定到特定用户,而且另外开一个 873 端口。考虑到防火墙和灵活性的问题,rsync + ssh 显然是最灵活的。
当我们需要从镜像或者备份Server上面拉取的时候也很方便,直接把来源和目标换一下就可以了。*nix 万岁!
每次输入密码总是不科学的。下面顺便提一下如何使用密钥自动登录
- 进入Server~目录建立.ssh目录:
|
|
- 回到本机,进行~目录生成密钥对
|
|
- 复制公钥到Server
|
|
- 现在退出,再登录 [email protected] 就不需要输入密码了。原理上基本就是 ssh 会将两端的~目录下面的密钥和公钥进行配对,成功证明是本人。相比每次输入密码,除了省事外也更安全。
Author Klesh Wong
LastMod 2015-05-06