我可以通过 rsync 协议访问备份服务器(只有 rsync,没有别的)。现在,我想从那里获取文件(即 .tar.gz)并将其直接传递给 tar 命令,而不将存档保存在本地文件系统中。
为了形象化,通过 ssh 访问,我可以:
ssh remote_host cat backup.file.tar.gz | tar xzf -
Run Code Online (Sandbox Code Playgroud)
我将在本地获得未压缩的备份,而无需将 .tar.gz 实际存储在本地机器上。
使用rsync时可以实现吗?
通常你可以只使用命名管道,如下所示:
mkfifo mypipe
tar xzf mypipe &
rsync --inplace server:/remote/file.tar.gz mypipe
Run Code Online (Sandbox Code Playgroud)
然而,rsync 太聪明了,因为它识别出远程文件是普通文件而本地文件是管道。所以它首先删除管道,然后传输远程文件。 scp没有这个问题,并且会很乐意将数据发送到命名管道(不幸的是,这对您没有帮助)。
我不这么认为,但你也许可以使用scp:
scp file /dev/stdout
Run Code Online (Sandbox Code Playgroud)
会将文件复制到标准输出。您可以将文件源所需的远程用户和主机信息添加到 的命令行参数中scp。
| 归档时间: |
|
| 查看次数: |
9828 次 |
| 最近记录: |