如何同时进行 gzip 和 scp

Noo*_*oob 6 centos bash shell ubuntu bash-scripting

我有一个文件,我想在其中压缩并同时使用 scp 传输到另一台主机。

我尝试执行以下命令但失败了。我不介意稍后拉上拉链和 scp,但我只想知道我哪里弄错了

使用管道我错了吗?在这里?

-bash-3.2$ gzip -c aum.dmp | scp oracle@192.168.0.191:/export/home/oracle/aum.dmp.gz
Usage: scp [-pqrvBC46] [-F config] [-S program] [-P port]
           [-c cipher] [-i identity] [-o option]
       [[user@]host1:]file1 [...] [[user@]host2:]file2
Run Code Online (Sandbox Code Playgroud)

问候, 菜鸟

Arc*_*mar 7

gzip 将写入 STDOUT,而 scp 无法处理。

尝试

gzip -c aum.dmp | ssh -l  oracle 192.168.0.191 'cat > /export/home/oracle/aum.dmp.gz'
Run Code Online (Sandbox Code Playgroud)

反而。

在哪里

  • gzip -c aum.dmp | 将 gzip aum.dmp,并将结果发送到 stdout
  • ssh -l oracle 192.168.0.191 将在 192.168.0.191 上连接到用户 oracle
  • 'cat > /export/home/oracle/aum.dmp.gz' 将执行此命令

'猫> /export/home/oracle/aum.dmp.gz'

  • cat 将捕获标准输入(来自命令之前的标准输出 | )
  • > /export/home/oracle/aum.dmp.gz 将写入此 /export/home/oracle/aum.dmp.gz

执行 n 远程站点的 cat 部分的全部目的是捕获 gzip 结果。


小智 6

您可以使用-C标志,使ç在ompressionscp转移。这应该足够了,尽管您可以查看man scp有关压缩的更多详细信息。


Noa*_*nos 5

如果您需要从远程服务器获取文件/目录到本地存档,您可以在 ssh 中使用tar + gzip,然后重定向到本地文件。例如:

ssh user@server "sudo tar cvzf - /var/log/containers/**/*.log" > containers_logs.tgz
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • c - 创建存档文件。
  • v - 显示进度。
  • z - 用 gzip 压缩。
  • f - 存档的文件名。