加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用Fabric写入远程文件

发布时间:2020-12-20 12:18:23 所属栏目:Python 来源:网络整理
导读:我正在尝试备份数据库并使用 Fabric将它们移动到不同的服务器. 在远程服务器上,要打开文件进行写入,它将失败并显示错误. newFile = open('%s%s' % (dumpPath,newFileName),'w')IOError: [Errno 2] No such file or directory: '/home/ec2-user/dbbackup.sql.
我正在尝试备份数据库并使用 Fabric将它们移动到不同的服务器.

在远程服务器上,要打开文件进行写入,它将失败并显示错误.

newFile = open('%s%s' % (dumpPath,newFileName),'w')
IOError: [Errno 2] No such file or directory: '/home/ec2-user/dbbackup.sql.bz2'

该文件存在,我甚至尝试预先创建,以防万一结构没有权限创建,但它仍然没有工作

run("touch dbbackup.sql.bz2")

编辑:我知道我可以将文件上传到远程服务器,但这不是我想用open命令做的.我正在尝试压缩大文件(数据库转储)是否可以在远程服务器上执行此操作,或者我是否必须将数据库转储复制到本地主机,在那里压缩然后再上传.这是本地主机上的压缩:

compObj= bz2.BZ2Compressor()
newFile = open('%s%s' % (dumpPath,'w')
dbFile = file( '%s%s' % (dumpPath,filename),"r" )
block= dbFile.read( BLOCK_SIZE )
while True: #write the compressed data
        cBlock= compObj.compress( block )
        newFile.write(cBlock)
        block= dbFile.read( BLOCK_SIZE )
        if not block:
            break
    cBlock= compObj.flush()

解决方法

我不知道你是否可以远程打开文件.但即使你可以,在你的情况下也可能不是一个好主意,因为你将通过ssh获取大文件(记住Fabric仍在你的本地机器上运行).为什么不远程压缩文件,然后获取压缩文件?在mysqldump的情况下,它看起来像这样:

run('mysqldump [options] | gzip > outputfile.sql.gz')
get('outputfile.sql.gz')

(更多关于mysqldump和gzip:Compressing mysqldump output)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读