是否可以使用 Unix 命令通过 SSH 将我的子目录中的文件 cp 到远程计算机中?

是否可以使用 Unix 命令通过 SSH 将我的子目录中的文件 cp 到远程计算机中?

我将一系列软件文件下载到~/Downloads我个人计算机上的子目录中。我还使用 bash 远程连接到使用ssh.

是否可以将此文件传输ssh到远程计算机?

答案1

您可能想用于scp此目的。它是使用 SSH 协议传输文件的安全方法。

例如,要将名为yourfile.txtfrom 的文件复制~/Downloads到远程计算机,请使用:

scp ~/Downloads/yourfile.txt [email protected]:/some/remote/directory

你可以看更多例子这里

答案2

虽然scp这显然是正确的工具,但如果由于某种原因您无法使用它,您可以从本地计算机执行类似以下操作,将目录结构复制到远程计算机:

tar -c . | ssh <remote> tar -x

这将是tar本地计算机上的当前目录,并将该目录写入该目录,tar然后stdout将其传送到一个ssh命令,在该命令中它将执行远程命令以解压缩从中读取的文件stdin

编辑以反映 Dietrich Epp 关于-f -在创建和提取端均默认的评论,因此无需明确指定。

答案3

如果您想在更多的情况下执行此操作,sshfs如果您使用的是支持 FUSE 的类 Unix(Linux、*BSD、Mac OS X),我建议您安装远程文件系统。在您的主目录下创建一个目录,例如 ~/remote-server:

    $ mkdir ~/remote-server

然后使用 挂载远程文件系统sshfs。将“yourserver.com”替换为远程计算机的主机名,将“远程目录名称”替换为您在远程系统上使用的目录。

    $ sudo sshfs [email protected]:/name/of/remote/directory ~/remote-server/

完成此操作后,远程目录就是文件系统的一部分,您可以在其上使用所有常规工具,包括cp

    $ cp ~/Downloads/your-files ~/remote-server

如果您尚未安装sshfs,您应该能够使用包管理器将其安装在您的计算机上(查找名为sshfs或 的包fuse-sshfs)。欲了解更多信息,您可以阅读在线教程

顺便说一句,这是我最喜欢的在远程服务器上管理文件的方式。我通常以这种方式安装一台生产服务器和两台开发服务器,并使用它们的正常文件浏览工作流程。

答案4

添加到上面的答案。有时我不太确定远程路径。在这些情况下,我sftp首先导航到所需位置,然后使用 get 或 put 实际下载或上传文件。

如果您还想保持某些内容始终同步,甚至想在本地执行位于远程计算机上的某些文件,sshfs那么效果很好。

相关内容