如何通过网络提取档案

slu*_*uge 8 ssh solaris

我有两台 Solaris 服务器。在 server1 上,我有一个文件archive.tar.gz. 我需要使用 ssh 将它解压到 server2。

所以,我写了命令:

ssh server2 < archive.tar.gz | gunzip -c | tar -xf - -C /home/
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误:

不会分配伪终端,因为 stdin 不是终端。

如何正确复制文件?

slm*_*slm 13

我相信你可以做这样的事情:

$ cat archive.tar.gz | ssh server2 "tar zxvf -"
Run Code Online (Sandbox Code Playgroud)

如果您需要控制它在 server2 上提取到的目录:

$ cat archive.tar.gz | ssh server2 "cd /path/to/dir; tar zxvf -"
Run Code Online (Sandbox Code Playgroud)

索拉里斯

鉴于您使用的是 Solaris,您的 tar 版本可能不包含 GNU tar 提供的任何压缩功能。不用担心您仍然可以执行此命令,我们只需要将 cat 分解archive.tar.gz为可以先解压缩 tarball 的命令。

这样的事情应该做:

$ cat archive.tar.gz | ssh server2 "(cd /some/dir; gunzip | tar xf -)"
Run Code Online (Sandbox Code Playgroud)

或这个:

$ gzip -dc < sample.tar.gz | ssh server2 "cd /path/to/dir; tar xvf -"
Run Code Online (Sandbox Code Playgroud)

或这个:

$ gunzip sample.tar.gz | ssh server2 " cd /path/to/dir; tar xvf -"
Run Code Online (Sandbox Code Playgroud)