我正在使用 Linux (centos) 机器,我已经使用ssh. 现在我的问题是如何将文件从一个系统复制到另一个系统?
假设,在我的环境中,我有两个系统,如System A和System B。我正在使用System A机器和其他一些使用System B机器。
如何将文件从 复制System B到System A?并且,将文件从 复制System A到System B?
是否有可能做到这一点:
ssh user@socket command /path/to/file/on/local/machine
也就是说,我想一步使用本地文件执行远程命令,而不是先使用scp复制文件。
谢谢sshfs魔术,我可以从远程服务器挂载我的主目录
sshfs user@server:/home/user ~/remote
Run Code Online (Sandbox Code Playgroud)
乐观地,我认为我会在(在挂载中)设置一个本地inotify-hook,以便本地程序可以对远程日志更改做出反应。~/remote/logFilesshfs
cd ~/remote
touch logFile # create remote file
inotifywait logFile & # set up local inotify-hook
ssh user@server -x touch /home/user/logFile # touch file from remote
Run Code Online (Sandbox Code Playgroud)
什么也没有发生。inotifywait除非我touch在本地保存文件,否则是无声的。写入命名管道同样失败。
为什么是这样?
我怎样才能弥合这个差距?
我可以inotifywait在远程运行,修改文件系统更改序列化策略并保持与本地的连接,但是我基本上是在重新实现 SSHFS。它完全扼杀了抽象。
当连接到SSH与一台主机,通常主机和客户之间提供了三个“管道”,为stdin,stdout和stderr。
是否有命令行选项可以为其他文件描述符(3及以后)创建转发?
例如,我想做
ssh --forwardfd=10:3 remotehost 'echo test >&3'
Run Code Online (Sandbox Code Playgroud)
它将打印“test”到本地打开的文件描述符 10。
在 Midnight Commander 中,可以使用以下方法与远程机器建立 SFTP 连接:
cd #sh:yourusername@example.com:/home/username/
Run Code Online (Sandbox Code Playgroud)
当远程机器使用非标准端口时,如何做到这一点?
我试图找到使用 ssh 上传文件的最简单方法,然后在同一 ssh 会话中的远程机器上运行命令进行一些后期处理,这样我就不需要再次登录了。如果可能,上传应该显示一些进度指示器。
到目前为止,我研究了 scp 和 rsync,它们都不能运行任何钩子。(我可以使用--rsync-path参数在rsync之前执行一些脚本)但我想做后处理。有没有办法打开 ssh 会话、上传、执行命令并再次关闭它?
可能的重复:
SSH 轻松将文件复制到本地系统
让我们举一个例子:
我已连接到
ssh user@myserver.com.
我需要将本地文件复制到远程服务器,而无需退出 SSH。
这可能吗?我知道我可以通过Ctrl+暂停进程Z,scp文件,然后fgSSH 进程回到前台,但是有没有办法在不离开它的情况下从活动的 SSH 会话中做到这一点?
我经常会通过 SSH 连接到另一台计算机,并且希望将文件下载到本地计算机上,而无需打开新的终端和 scp。例如,这样的事情:
\n\nlocal $ ssh remote\nremote $ ls\nremote_file\nremote $ download remote_file\n\xe2\x80\xa6\nremote $ ^D\nlocal $ ls\nremote_file\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法 \xe2\x80\x94 甚至是一个可怕的 hack \xe2\x80\x94 让我在通过 SSH 连接到远程主机时下载文件,而不使用 SCP?
\n\n我考虑过使用一些技巧,例如$SSH_CLIENT,但是当我的本地计算机位于 NAT 之后(基本上一直如此)时,这将不起作用。
我正在尝试从我已经连接到的 linux 服务器下载文件。我知道您可以使用 scp 连接到主机并从主机中提取文件,但这仍然需要在本地。我可以将文件 scp 传送回我的本地机器,但无法从主机访问本地机器。
有没有办法只下拉你已经在看的文件?就像是:
来自主持人
$ download <THEFILE>
Run Code Online (Sandbox Code Playgroud)
这确实比返回到我的本地终端比 scp 文件更方便。相反,您可以只说“抓住这个”完成。
我想客户必须知道如何处理该文件。而且我很确定“terminal.app”没有默认的下载文件夹。所以也许这是不可能的。
顺便说一句,我正在从 mac 连接到 Debian。
我想将文件目录从远程服务器复制到我的本地机器。由于它是大量文件,因此需要忽略现有文件的选项。
不幸的是,rsync由于某种原因不可用(远程服务器来自 CDN 服务,超出了我的控制范围)。
所以我想我被困scp -r在有问题的文件夹上。
有没有在忽略现有文件的同时这样做?