我想设置一个cron脚本,自动创建转储从特定的Postgres在Docker上运行的数据库容器。我知道如何从外部执行容器中的命令,也熟悉pg_dump。
不知何故,对于我的容器和数据库,我似乎不能使它工作:
docker exec <container> pg_dump -U postgres <mydb> > /pg-snaps/<mydb>_$(date).sql
我得到以下错误:
zsh: no such file or directory: /pg-snaps/<mydb>_<date>.sql
目录/pg-snaps已存在。我可以在容器内执行相同的命令,它可以工作。我不知道为什么它不能与docker exec
一起工作。我查阅了如何做到这一点的方法,它的建议和我想做的一样。添加";在要执行的命令周围也会出现'no such file or directory'。
试试这个例子:
docker exec -it <container> sh -c 'pg_dump -U postgres <mydb> > /pg-snaps/<mydb>_$(date).sql'