我有一台使用 ssh 和 plesk 进行访问的 Linux 专用服务器。我的服务器上没有足够的空间,因此我无法压缩所有文件夹和文件,然后将它们 scp 到本地计算机上。
是否有一个 bash 命令可以直接在本地驱动器上压缩远程文件?
答案1
如果您的“本地驱动器”是 Linux 客户端,您可能只需使用远程 tar 命令将输出打印到 stdout(默认情况下,显式选项规范为“-f -”)并将其通过管道传输到从 stdin 读取的本地 tar(再次显式选项“-f -”),如下所示:
ssh your.dedicated.server 'tar -czf - /my/files/to/back/up' | tar -xzf -
使用“-z”选项时,Tar 将使用 gzip 的默认压缩级别 (6) 压缩您的数据。如果您想要更好的压缩率并且有空闲的 CPU 周期,您可以改用“-j”,但如果是具有快速链接的旧机器/虚拟机,则最终可能会得到较低的整体传输速率。
哦,还有一点需要修改:您可以在 SCP 中指定 -C(压缩)选项,这也会使用 gzip 作为压缩算法,尽管压缩率通常会比 tar/gzip 组合略低。输入的内容更少,而且您会获得漂亮的进度指示器作为奖励。
答案2
我不太清楚你的问题是什么。你能再解释一下吗?
无论如何,请参阅 scp 的 -r 和 -C 选项。这允许您以递归方式复制文件树并在网络上压缩它。之后,您始终可以在本地计算机上对其进行压缩。
如果你真的想即时压缩它,至少用 tar 可以这样
ssh 你的服务器'tar cvzf-/path'>local.tar.gz
答案3
我不确定是否有命令可以运行,以便在传输过程中将数据压缩到本地计算机,但您不能只传输一些解压后的数据吗?这些数据足以让您删除远程计算机上的原始数据,然后压缩其余数据并发送它们?然后,您可以在本地计算机上解压它们,将它们按原样放在一起,然后重新压缩它们?
抱歉,希望我明白您想要实现的目标。