我可以压缩文件、上传文件并将其展开到服务器上的目录中,如下所示:
tar -pzcf - example.txt | ssh [email protected] 'cd /some-path/ && tar -zxf -'
是否可以用heredoc做同样的事情?类似于以下内容(不起作用):
tar -pzcf - example.txt | ssh [email protected] /bin/bash <<EOF
cd /home/1091507.cloudwaysapps.com/qnqdwumtsj/public_html/_aqualaunch
tar -zxf -
EOF
理由:我有一堆本地脚本,在两台服务器上通过 SSH 运行,这些服务器以不同方式对待引号,heredoc 修复了该问题。但是,一些脚本通过 pipeviewer 将文件通过管道传输到服务器,以便我可以监视进度,并且我无法找到一种方法将本地文件的内容通过管道传输到
pv
,然后传输到heredoc表达式,以便我可以在服务器上操作该文件(就像我可以在没有heredoc的情况下一样)。
按照您编写的方式,here-doc 正在由本地 shell 处理,而不是远程 shell。您需要引用整个远程命令,以便此处文档位于其中。
tar -pzcf - example.txt | ssh [email protected] '/bin/bash <<EOF
cd /home/1091507.cloudwaysapps.com/qnqdwumtsj/public_html/_aqualaunch
tar -zxf -
EOF
'
但是您不需要为此提供此处文档。只需将这两个命令放入 ssh 参数即可
tar -pzcf - example.txt | ssh [email protected] '
cd /home/1091507.cloudwaysapps.com/qnqdwumtsj/public_html/_aqualaunch
tar -zxf -
'