![是否有一些类似 ssh 的 unix 实用程序,但它也可以将当前文件夹与服务器同步?](https://linux22.com/image/1532989/%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E4%BA%9B%E7%B1%BB%E4%BC%BC%20ssh%20%E7%9A%84%20unix%20%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E4%BD%86%E5%AE%83%E4%B9%9F%E5%8F%AF%E4%BB%A5%E5%B0%86%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8C%E6%AD%A5%EF%BC%9F.png)
如果我能做这样的事我会非常有用:
- 进入本地目录
- 通过 SSH 连接到远程主机
- 本地目录同步到远程主机(本地 -> 远程)
- 远程运行命令
- 再次同步结果(远程 -> 本地)
有没有办法使用像 ssh 这样的标准工具或可以执行此操作的应用程序来做到这一点?
答案1
你可以看看sshfs
- 通过 SSH 挂载目录而不是来回传输文件。
在这种情况下,您将连接到服务器并挂载 PC 的目录。然后,您可以直接操作文件,然后再卸载和断开连接。
根据网络,您可能需要转发本地 SSH 服务器的监听端口。
它是 FUSE,因此不需要 root / sudo。
安装:
sshfs user@host:/home/myuser/mydir ./mydir
使用以下方式卸载:
fusermount -u ./mydir
答案2
您可以将rsync --rsh=ssh
其用于步骤 2+3、ssh
步骤 4,然后rsync
再次用于步骤 2+5。
的参数rsync
一开始可能看起来有点复杂 - 但您可以先进行测试--dry-run
。
答案3
对于列表中的同步部分(因为你想双向传输),你也可以看看齐奏,它与 rsync 类似但不同。您可以在命令之前和之后运行它,它将使双方保持同步。
与rsync类似:
- 通过 SSH 传输(以及本地和其他传输)
- 底层的差异传输,如果文件的部分内容相同,则不需要完全传输它们,而只需传输已更改(或不同)的部分,并在另一端重建整个文件,这对于减少带宽使用非常有用
与 rsync 不同:
- 需要两端都进行 unsion —— 并且对 unison 版本号非常挑剔
- 双向同步:将自上次同步以来更改的文件从一端同步到另一端 - 并检测两者是否都已更改,然后忽略它或让您选择
- 提供用于交互使用的文本用户界面和图形用户界面以及非交互模式
如果你想明确复制方向,我也会建议使用 rsync,就像 jvb 在
https://superuser.com/a/1219619/738892– 以--dry-run
(或-n
简称)开头也很有帮助。Atties 对斜线的评论也很重要:从-av
复制目录开始(带有输出 - 看看会发生什么)。
您可能想要或不想使用--del
和朋友,这取决于您是否要删除从 DEST 中的 SRC 消失的文件。根据您的使用情况,--update
(跳过 DEST 上较新的文件),可能对你有用。