使用SFTP将数据从STDOUT复制到远程计算机

时间:2010-05-05 10:43:11

标签: postgresql ssh sftp database-backups remote-backup

为了使用SFTP将大型数据库分区备份到远程计算机,我想使用databases dump命令并使用SFTP直接将其发送到远程位置。

当您没有足够的本地磁盘空间来创建备份文件,然后将其复制到远程位置时需要转储大型数据集时,这非常有用。

我尝试使用提供此功能的python + paramiko,但性能比使用本机openssh / sftp二进制文件传输文件要差得多。

有没有人知道如何使用Linux上的本机sftp客户端或者像paramiko这样的库? (但是一个在本地sftp客户端附近执行的操作)?

2 个答案:

答案 0 :(得分:2)

如果您具有远程shell访问权限(ssh),则可以执行以下操作:

fancy-sql-dump-command --to-stdout | ssh me@remotehost "cat > my-dql-dump.sql"

Google“管道覆盖ssh”了解更多示例,例如this example using tar

答案 1 :(得分:0)

我建议sshfs,它通过SFTP协议运行。

某些操作系统发行版已打包,对于其他您需要编译,例如在RedHat Enterprise Linux 5.4+或其克隆如CentOS上编译:

sudo yum install fuse-devel glib-devel
sudo usermod -a -G fuse "$USER"

cd /tmp
tar xzf sshfs-fuse-2.2.tar.gz
cd sshfs-fuse-2.2
./configure
make
sudo make install

# relogin

mkdir /tmp/servername
sshfs servername:directory /tmp/servername/
ls /tmp/servername/