[英]How to `--no-clobber` with `docker cp`? Copy file from a Docker container but not overwrite if destination already exists
我想从 Docker 容器中复制一个文件:
docker cp MY_CONTAINER_NAME:/path/to/file /destination/path
但是, docker cp
似乎没有像常规cp
那样的--no-clobber
选项。 那么如果文件已经存在,我如何复制文件而不覆盖目标?
在运行docker cp
之前简单地检查目的地的存在不是原子的并且容易受到竞争条件的影响。
我会使用以下脚本:
#!/bin/bash
set -o noclobber
{ > /destination/path ; } &> /dev/null
if [ $? -ne 0 ] ; then
echo 'already exists!'
exit 1
fi
docker cp MY_CONTAINER_NAME:/path/to/file /destination/path
noclobber
将防止在重定向输出时意外覆盖。 如果文件已经存在,重定向将返回一个非零退出代码。
编辑:
我发现这个 SO 答案使用完全相同的解决方案: 如果 bash 脚本中不存在则原子创建文件
也许其他评论会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.