我读了这个词
同步
今天第一次在 sueperuser 上寻找仅传输已更改文件的解决方案。
我正在这个环境下开发一个网站:
- 使用 xampp 运行的本地网站(使用 Git 和远程 repo 进行跟踪以进行合作)
- 在 Apache 服务器上暂存网站(无可用的 git)
- 同一 A. 服务器上的实时网站(无 git)
我只是在弄清楚我的工作流程,它是这样的:
- 从远程仓库拉取
- 本地进行更改
- 上传至临时服务器
- 上传至直播服务器
- 推送至远程存储库
现在的问题是,如果我传输整个 wordpress 安装,下载和上传文件将需要花费大量时间。
由于没有可用的 GIT,rsync 是正确的选择吗?我有 SSH 访问权限,但真的不知道自己在做什么。有人可以提示如何设置吗?我几天前安装了 PuTTY,这有帮助吗?
答案1
Rsync 绝对可以解决您的问题。如果您使用 运行 rsync,-e "ssh <ssh params>"
那么它将通过 ssh 连接运行,而 rsync 的底层功能是(在本地)生成文件列表和列表中每个文件的增量,然后将其与远程生成的列表进行比较,然后发送文件。这意味着即使在快速连接下,启动时也可能很慢,但一旦开始,速度就会很快。
我相信有 rsync 和 ssh 的 Windows CLI 版本,如果没有,您可能想尝试使用 bash/rsync/ssh 安装 cygwin。如果您不需要太多东西,安装过程并不复杂。rsync 的诀窍是获得所需的正确选项。
因此,在您的示例中,您有stagingserver.local
和remoteserver.local
。假设您以用户 的身份访问 remoteserver releaseuser
。首先确保您可以[email protected]
使用 putty 进行 ssh 连接(我建议您在 remoteserver.local 上设置 ~releaseuser/.ssh/authorized_keys ,以允许您使用本地 ssh 密钥的公共版本以 releaseuser 身份登录,您可以通过在 putty-keygen 中创建私钥并将 openssh 私钥/公钥保存为和localkey.pub
来进行设置,然后将公钥上传到)。 localkey
localkey.pub
remoteserver.local
好的,要将本地目录 rsynclocaldirectory
到远程remotedirectory
,请使用上面的方法:-
rsync -rave "ssh -i localkey" localdirectory/ [email protected]:/remotedirectory/
每个目录名称后面的斜杠告诉它将内容复制localdirectory
到目录remotedirectory
而不是复制目录本身。如果你漏掉了斜杠,你将remotedirectory/localdirectory
在远程服务器上创建
因此,稍微解释一下我使用的选项-rave
(我总是觉得它们很容易记住)。 表示-r
递归,因此进入目录。-a
表示存档,与 相同-rlptgoD
,表示基本上发送所有内容(链接、权限、时间、组、所有者、设备,但不是硬链接、acls 或 xattrs)。 -v
表示详细,因此 echo 以显示它正在发送的内容,并且 -e 指定命令rsh
(在我们的例子中ssh -i
,它告诉 ssh 要使用哪个密钥文件)。
希望有帮助