scp同时解压文件而不保存

sca*_*so9 3 linux centos rsync scp tar

我一直在寻找答案,但我发现没有任何效果。

有一个 tar 文件将位于不同服务器上的 cd 上,我需要将其传输到我的服务器并同时解压缩它,而无需中间保存。tar 有多个文件,它们可能是未知的。

如何从我的服务器或其他服务器执行此操作?

我已经用 scp、tar 和 ssh 对此进行了探索,并试图用 rsync 找出答案。

任何帮助表示赞赏

Kam*_*ski 5

在目标系统上(将在其中提取文件):

cd /target/dir && ssh user@source_server "cat /path/to/your/file.tar" | tar -xvv
Run Code Online (Sandbox Code Playgroud)

或者

从源服务器(tar 文件所在的位置):

ssh user@target_system "cd /target/dir && tar -xvv" < /path/to/your/file.tar
Run Code Online (Sandbox Code Playgroud)

下面有一些替代方案(在目标系统上),只是为了展示您可能会感兴趣的更高级的方式。

scp 和 bash 进程替换(如果可用):

scp user@source_server:/path/to/your/file.tar >(cd /target/dir && tar -x)
Run Code Online (Sandbox Code Playgroud)

scp/proc/self(如果有):

cd /target/dir && scp user@source_server:/path/to/your/file.tar /proc/self/fd/1 | tar -x
Run Code Online (Sandbox Code Playgroud)