繁体   English   中英

如何使用`docker cp``--no-clobber`? 从 Docker 容器复制文件但如果目标已存在则不覆盖

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM