我试图下载我们的暂存数据库的文件(副本)。我在these docs之后使用pgbackups
。
我创建了一个备份,而不是public-url
使用heroku pgbackups:url b462 --app staging-appname
,这有效。
我运行命令curl -o latest.dump
heroku pg:backups <public-url> b462 -a staging-appname
并获取 curl:未指定网址!
它所说的<public-url>
我已经复制了实际的长公共网址,如https://s3.amazonaws.com/reallly-long-url-with-acess-key-ect
。
我在这里缺少什么?
答案 0 :(得分:6)
以下将创建备份:
heroku pg:backups capture --app name-of-the-app
使用终端
中打印的以下信息---backup---> b001
在以下命令中
heroku pg:backups public-url b001 -a name-of-the-app
会给你转储的网址
答案 1 :(得分:2)
在运行heroku pgbackups:capture --app=staging-appname
后,请立即尝试以下操作以获取最新文件:
curl -o latest.dump `heroku pgbackups:url --app=staging-appname`
仅当您要查找特定的旧文件时才需要b..
。
答案 2 :(得分:2)
我也在与this doc挣扎,并且Prakash的建议对我不起作用(错误抱怨无法解析不属于URL的'heroku',所以语法似乎是不好,至少对于我正在使用的pg或pgbackup gem的版本。)
我也试过wget,正如heroku doc中所建议的那样,无济于事。
当我感到难过时,我会把它想到最简单的元素,这使我得到了一个比文档更简单的解决方案......
我在Rafael的回答中使用了命令来生成一个临时URL来检索转储文件:
heroku pg:backups public-url b001 -a name-of-the-app
然后,我没有将生成的网址插入curl命令,而是我只是将该网址粘贴到Chrome的地址栏中,然后使用我的网络浏览器下载了该文件。
下载成功,db文件有效。
答案 3 :(得分:0)
用更多的糖,这里有一个shell脚本示例,用于从heroku下载mysql dump并将其恢复为本地数据库
backup_name=$1
if [ -z "$backup_name" ]
then
echo "You must supplied heroku backup name (ex: b001)"
return
fi
echo "Loading '$backup_name' database from heroku"
heroku pg:backups public-url $backup_name -a your-app-name > last_url.txt
curl -o latest.dump `cat last_url.txt`
dropdb local-db-name
createdb local-db-name
pg_restore -c -d local-db-name latest.dump
您需要将heroku备份名称作为输入。