为什么这个 tar 命令在 ssh 调用中作为字符串传递时会失败?
why does this tar command fail when passed as string in ssh call?
ssh user@server "sudo tar -czf - -C /path/To/Directory *.properties" | tar xzf -
失败并出现以下错误 -
tar: *.properties: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
如果我通过 ssh 连接到服务器然后在服务器上,而不是 tar -czf -
使用 tar -czf abc.tgz
并在最后删除管道命令,它可以正常工作,即压缩目录中的所有 .properties 文件?
我试过使用 --wildcards 参数以及 -P 和以 *.properties 结尾的完整路径,但它们都没有用。
远端的 shell 在执行 tar
之前扩展了 user
主目录中的 *.properties。我猜 ~user
.
中没有匹配的文件
您可能想要的更像(假设 user
可以访问该目录)
ssh user@server 'cd /path/To/Directory && sudo tar -czf - *.properties' \
| tar xzf -
或者,使用 tar
的 --wildcards
选项,并停止远程 shell 扩展参数:
ssh user@server 'sudo tar -czf - -C /path/To/Directory --wildcards \*.properties'
ssh user@server "sudo tar -czf - -C /path/To/Directory *.properties" | tar xzf -
失败并出现以下错误 -
tar: *.properties: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
如果我通过 ssh 连接到服务器然后在服务器上,而不是 tar -czf -
使用 tar -czf abc.tgz
并在最后删除管道命令,它可以正常工作,即压缩目录中的所有 .properties 文件?
我试过使用 --wildcards 参数以及 -P 和以 *.properties 结尾的完整路径,但它们都没有用。
远端的 shell 在执行 tar
之前扩展了 user
主目录中的 *.properties。我猜 ~user
.
您可能想要的更像(假设 user
可以访问该目录)
ssh user@server 'cd /path/To/Directory && sudo tar -czf - *.properties' \
| tar xzf -
或者,使用 tar
的 --wildcards
选项,并停止远程 shell 扩展参数:
ssh user@server 'sudo tar -czf - -C /path/To/Directory --wildcards \*.properties'