Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用SFTP将数据从标准输出复制到远程计算机_Postgresql_Ssh_Sftp_Database Backups_Remote Backup - Fatal编程技术网

Postgresql 使用SFTP将数据从标准输出复制到远程计算机

Postgresql 使用SFTP将数据从标准输出复制到远程计算机,postgresql,ssh,sftp,database-backups,remote-backup,Postgresql,Ssh,Sftp,Database Backups,Remote Backup,为了使用SFTP将大型数据库分区备份到远程机器,我想使用databasesdump命令并使用SFTP将其直接发送到远程位置 当您没有足够的本地磁盘空间来创建备份文件,需要转储大型数据集,然后将其复制到远程位置时,这非常有用 我尝试过使用python+,它提供了此功能,但性能比使用原生openssh/sftp二进制文件传输文件差得多 有人知道如何使用linux上的本机sftp客户端或类似paramiko的库来实现这一点吗?(但在本机sftp客户端附近执行的除外)如果您具有远程shell访问(ssh

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

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

我尝试过使用python+,它提供了此功能,但性能比使用原生openssh/sftp二进制文件传输文件差得多


有人知道如何使用linux上的本机sftp客户端或类似paramiko的库来实现这一点吗?(但在本机sftp客户端附近执行的除外)

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

fancy-sql-dump-command --to-stdout | ssh me@remotehost "cat > my-dql-dump.sql"
Google“pipe over ssh”获取更多示例,例如,我推荐使用的是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/

这将在sftp服务器上起作用,这些服务器也提供了带shell的ssh和对cat的访问,但对不提供shell或不提供“cat”的服务器不起作用,这就是为什么我想使用本机sftp。不幸的是,sshfs性能不是很好(一次传输大于10GB的文件)。所以谢谢你的建议,但这仍然不能解决我的问题。