你可以使用 scp、sftp 或 rsync 管道吗?

你可以使用 scp、sftp 或 rsync 管道吗?

我想将 ~700GiB 目录压缩并发送到我无法控制的远程驱动器。我本地没有硬盘空间来创建 tarball,然后将其复制过来。远程也受 rssh 保护 - 您无法 ssh 进入服务器并运行任意命令。

不过,我可以使用 scp、rsync 或 sftp。所以,我的问题是针对这 3 个命令之一的。有没有办法让 scp、rsync 或 sftp 复制管道,而无法在另一端运行任意命令?


更新:以下解决方案不适用于我们的二级存储。我们仅限于运行某些命令。我们不能使用 ssh - 使用 ssh 的命令是通过 rssh 进行过滤/控制的。

最后,我们取消了所有辅助帐户,并花了很多钱将我们的主存储大小增加了一倍(我们的主主机可以在不迁移的情况下做到这一点,这很酷)。然后我们创建了一个临时存档并正常发送。 (我们无法用我们的初始存储量来做到这一点。)

将来,我们将使用具有专用更大存储空间的辅助 VPS,这样就不会再发生这种情况。很明显,我所要求的是不可能的。

答案1

它不完全是“管道”,但您基本上可以告诉scp将特定的 FD(可以是管道)从您的主机复制到另一个主机。简单的 bash 命令如下:

scp不起作用,因为它需要提前确定尺寸):

scp <(tar cz files to compress) host:/path/to/new.file

但它可以与 pure 一起使用ssh

tar cz files to compress | ssh host "cat > /path/to/new.file"

答案2

通过 SFTP 的 RSYNC 行为

mirror甚至无需压缩任何内容,您就可以使用 LFTP(名称具有误导性)和LFTP 子系统将目录结构复制到另一端。 LFTP支持SFTP,镜像子系统支持rsync的几乎所有功能。它还可以将传输分成任意数量的连接,以使其速度更快。我一直这样做。

例子

另请查看这篇文章: https://serverfault.com/questions/135618/is-it-possible-to-use-rsync-over-sftp-without-an-ssh-shell

相关内容