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


15

我想本质上是在远程计算机上tar / gz目录并将文件保存到本地计算机,而不必从远程计算机重新连接到本地计算机。有没有办法通过SSH执行此操作?tar文件不需要存储在远程计算机上,只需存储在本地计算机上。这可能吗?

Answers:


26

您可以使用ssh命令执行此操作,只需告诉tar您在其标准输出上创建存档即可:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

如果您想在另一台计算机上进行许多文件操作,但对于一次创建存档来说过于费力,另一种方法是使用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

3
我很好奇,为什么您推荐tar -cf - foo | gzip -9而不是tar -czf - footar -cz foo
Patrick

@Patrick稍微更可移植,例如它将在Solaris上运行。
吉尔(Gilles)'所以

您愿意描述所有论点吗?
Rootical V.

3
@RooticalV。在文件的标准输出()上tar -cf - foo创建(-c)存档。使用最佳(最慢)压缩方法。如果您不在乎,则可以使用。-f -foogzip -9ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz
arekolek

-1

通过仅压缩传输文件来复制目录或文件的简单方法:

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2

1
这不会将tar存档存储在预期的本地计算机上。
库萨兰达

1
这是针对在搜索如何通过SSH通过压缩复制内容时遇到此问题的人(如我)。只是有这种额外的tar xz管道出了更简单,更可读的例子。
皮埃尔·德·LESPINAY
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.