【问题标题】:Elegantly send local tarball and untar on remote end优雅地发送本地压缩包并在远程端解压缩
【发布时间】:2015-06-05 06:27:14
【问题描述】:

全部,

这可能是一个常见问题解答,但我无法通过 search-fu 找到它。也就是说,我有点想做“反向”焦油管道。通常是一个 tar 管道,用于将本地文件夹作为 tar 球在单个 nice 命令中发送到远程位置:

tar zcvf - ~/MyFolder | ssh user@remote "cat > ~/backup/MyFolder.tar.gz"

(希望我没记错。我是凭记忆打出来的。)

我想知道相反的情况。假设我在本地有一个大目录的压缩包,我想做的是将它(rsync?scp?)复制到远程机器上,它将作为扩展文件存在,即:

Local:  sourcecode.tar.gz ==> send to Remote and untar ==>
Remote: sourcecode/

我想这样做是因为“本地”磁盘具有 inode 压力,因此保留一个较大的文件比保留许多较小的文件要好。但是远程系统的 inode 压力可以忽略不计,最好将其保留为扩展目录。

现在,我可以想出各种方法来使用 &&-command 链接等,但我认为必须有一种方法可以使用 tar-pipes 和 rsync 或 ssh/scp 来做到这一点,我只是没有看到.

【问题讨论】:

    标签: linux ssh rsync tar scp


    【解决方案1】:

    你已经走了大部分路了:

    ssh user@remote "tar -C /parent/directory -xz -f-" < sourcecode.tar.gz
    

    -f- 告诉 tar 从 stdin 中提取,-C 标志在解压缩之前更改目录。

    【讨论】:

    • 显然不适用于流,仅适用于命名输入文件。更新答案。
    • 这似乎做到了!如果有人知道 rsync 的方法,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2010-10-15
    • 2017-08-25
    相关资源
    最近更新 更多