我经常通过 ssh 连接到远程服务器,并且必须在该远程主机和我的本地 PC 之间传输一些文件。我没有该服务器的管理员权限,而且我不是唯一使用它的人。主机文件的完整路径可能因文件而异,并且通常很长。但是,我通常首先将文件传输到同一个本地文件夹。我有一个从本地设备到远程主机的无密码 ssh 连接设置。我目前对这个小操作的“工作流程”使用 scp,感觉效率很低:
- 我通常已经在远程主机上的相关文件位置进行了 ssh 操作:我使用它
readlink -f
来获取文件的完整路径 - 我复制路径(留下键盘点击)
- 我切换到本地计算机上的另一个终端并开始输入
scp hostname:
- 我粘贴文件路径(再次点击)
- 我
scp
以本地目录名称结束命令并执行
当我必须对许多文件执行多次上述操作时,这些文件不一定能轻松地包含在一个命令中,这确实感觉很不高效。步骤太多,重复输入和点击太多。
理想情况下,我希望有一个神奇的命令scp2local filename
,我可以从远程主机使用它来直接一次性完成所有这些步骤并将其发送到预定义的本地文件夹。但我不确定如何设置它。任何涉及从远程到本地 PC 的完整 ssh 无密码连接设置的事情都感觉是一个非常糟糕的主意,因为使用该服务器的其他人都可以连接到我的个人设备。(但也许有一种方法可以通过利用我只是将文件“发送回”我专门连接的设备这一事实来做到这一点?)
简而言之:定期将一些文件从远程主机传输到我正在连接的本地计算机的特定文件夹的最有效方法是什么(就人力而言)?
注意:我在本地设备上使用 WSL,这可能与整个“点击和复制”过程有关
您可以
sftp
在一个终端窗口中使用经典的文件传输协议并保持登录状态(如果几分钟不活动后注销,您可以执行一些简单的任务,例如ls
保持连接打开)。您可以通过 搜索文件
sftp
,但也许您必须执行只能通过 进行的操作ssh
,因此您可以打开两个终端窗口。如果您已经知道文件名和路径(可能通过通配符),您也可以使用rsync
来或多或少自动获取这些文件。