You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器备份示例中backup.tar存于何处?执行后文件未找到的困惑

解决Docker卷备份后找不到backup.tar的问题

我来帮你理清这个问题——先拆解下你用的这条备份命令到底在做什么,然后就能找到文件去哪了。

命令逻辑拆解

你执行的这条命令:

$ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

每个参数的核心作用:

  • --rm: 命令执行完成后自动删除这个临时容器,所以备份完成后它就彻底消失了,文件肯定不在这个容器里
  • --volumes-from dbstore: 把原容器dbstore的所有卷挂载到临时容器中,这也是为什么你能看到备份内容的输出——临时容器确实能访问到要备份的卷
  • -v $(pwd):/backup: 把你在主机上执行命令时的当前目录,挂载到临时容器的/backup目录下。这是关键:临时容器里的/backup和主机当前目录是实时双向同步的
  • tar cvf /backup/backup.tar /dbdata: 在临时容器里把/dbdata(原卷内容)打包到/backup/backup.tar——因为/backup映射的是主机目录,所以这个tar文件应该出现在你执行命令的主机目录里,既不在原容器dbstore里,也不会留在被删除的临时容器里

为什么你找不到文件?可能的原因

1. $(pwd)的路径不生效或找错了目录

  • 如果你是Windows系统,用CMD或PowerShell时,$(pwd)是Linux风格的变量,Windows不识别:
    • CMD里要换成%cd%
    • PowerShell里要换成${PWD}
  • 先在主机终端执行pwd(Linux/macOS)或cd(Windows CMD)/Get-Location(PowerShell),确认你当前的工作目录,然后去这个目录里找backup.tar

2. 权限问题

  • 可能你的主机用户没有写入当前目录的权限,导致tar命令看起来输出了内容,但实际上无法生成文件
  • 解决方法:Linux/macOS可以在命令前加sudo;Windows可以右键以管理员身份打开终端后再执行命令

3. Docker Desktop的WSL2路径映射问题

  • 如果你用的是WSL2后端的Docker Desktop,在WSL里执行命令时,$(pwd)是WSL内的路径,而你可能在Windows资源管理器里找错了地方
  • 你可以在Windows资源管理器里输入\\wsl$\,找到对应的WSL发行版,然后进入你执行命令的目录查找

验证步骤

  1. 先在主机终端执行以下命令,确认当前路径:
    • Linux/macOS: echo $(pwd)
    • Windows CMD: echo %cd%
    • Windows PowerShell: echo ${PWD}
  2. 手动导航到这个路径,查看是否有backup.tar
  3. 如果还是找不到,把命令里的$(pwd)换成绝对路径试试,比如:
    • Linux/macOS: -v /home/yourname/backups:/backup
    • Windows: -v C:/Users/yourname/backups:/backup(注意用正斜杠)

内容的提问来源于stack exchange,提问作者secondbreakfast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:53:46