如果我能做这样的事我会非常有用:
- 进入本地目录
- 通过 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 上较新的文件),可能对你有用。