使用 tar/gz 通过 SSH 将目录压缩到本地计算机?

Naf*_*Kay 20 bash ssh tar

我想基本上 tar/gz 远程机器上的一个目录并将文件保存到我的本地计算机,而不必从远程计算机连接回我的本地计算机。有没有办法通过 SSH 做到这一点?tar 文件不需要存储在远程机器上,只需要存储在本地机器上。这可能吗?

Gil*_*il' 33

您可以使用 ssh 命令来完成,只需告诉tar在其标准输出上创建存档:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz
Run Code Online (Sandbox Code Playgroud)

另一种方法,如果您想在另一台机器上进行大量文件操作,但对于一次性存档创建来说是多余的,这种方法更方便,是使用SSHFSFUSE文件系统)挂载远程机器的文件系统。您应该在 SSH 级别启用压缩。

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo
Run Code Online (Sandbox Code Playgroud)

  • @RooticalV。`tar -cf - foo` 从文件 `foo` 在标准输出(`-f -`)上创建(`-c`)存档。`gzip -9` 使用最好(最慢)的压缩方法。如果你不在乎,你可以使用 `ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz`。 (4认同)
  • 我只是好奇,你为什么推荐 `tar -cf - foo | gzip -9` 而不是 `tar -czf - foo` 或 `tar -cz foo`? (3认同)