如何将Windows文件复制到WSL环境中的Podman容器?
问题场景
我在Podman中启动了WordPress和MySQL容器用于测试插件,需要将本地WordPress的/uploads/文件夹复制到新实例中,但遇到了以下问题:
- 直接通过Windows资源管理器复制时,提示
You need permission to perform this action.权限错误。 - 使用
podman cp命令时因格式错误报错:
错误信息:podman cp :D:/xxx/WP/demo/uploads/ containerID:/var/www/html/wp-content/uploadserror rewriting "D:\xxx\WP\demo\uploads" to be relative to "/": expected root directory to be an absolute path, got "/"
- 进入WSL环境执行复制命令,出现权限拒绝:
错误信息:wsl -d podman-machine-default [user@user /]$ cp -r /mnt/d/xxx/WP/demo/uploads /home/user/.local/share/containers/storage/volumes/wp_test_env_wordpress/_data/wp-content/uploads/cannot create directory... permission denied
请问将Windows文件复制到Podman容器的最简方法是什么?
最简解决方法
方法1:修正podman cp命令格式
你之前的podman cp命令多了路径前的冒号,导致Podman解析Windows路径失败,去掉冒号即可正常执行:
# 使用正斜杠路径 podman cp "D:/xxx/WP/demo/uploads/" <你的容器ID>:/var/www/html/wp-content/uploads/ # 或使用转义后的反斜杠路径 podman cp "D:\\xxx\\WP\\demo\\uploads\\" <你的容器ID>:/var/www/html/wp-content/uploads/
执行前确保容器处于运行状态,替换<你的容器ID>为实际的容器ID或名称。
方法2:用tar管道绕过权限问题(适合权限严格的场景)
如果podman cp仍有权限问题,可以通过打包+管道的方式,让容器内进程处理解压,避免权限冲突:
- 在Windows命令行/PowerShell进入本地uploads的上级目录:
cd D:/xxx/WP/demo/ - 执行打包+解压命令:
这个命令会将本地uploads文件夹打包,通过管道传给容器内的tar -czf - uploads/ | podman exec -i <你的容器ID> tar -xzf - -C /var/www/html/wp-content/tar命令,直接解压到目标路径。
内容的提问来源于stack exchange,提问作者Janez Kranjski
相关产品推荐
相关产品推荐

