我有两台 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)
| 归档时间: |
|
| 查看次数: |
17237 次 |
| 最近记录: |