Docker cp与Unix cp的工作方式不同的原因是什么?

时间:2016-05-27 12:13:21

标签: bash unix docker cp

假设我有以下目录结构

parent-dir
+ child-dir
  + grandchild-file-a
  + grandchild-file-b
uncle-dir
  .
  ..

现在在unix上 - 如果我运行命令

parent-dir> cp child-dir ../uncle-dir

然后我希望得到

uncle-dir
+ child-dir
  + grandchild-file-a
  + grandchild-file-b

但是,如果我用docker cp重复一遍,那么我得到

uncle-dir
+ grandchild-file-a
+ grandchild-file-b

如果我这样做,那么unix可能是合理的:

parent-dir> cp child-dir/* ../uncle-dir

我的问题是: Docker cp与Unix cp的工作方式不同的原因是什么?

1 个答案:

答案 0 :(得分:2)

cp上的泊坞文档解释了这一点:

  
      
  • SRC_PATH指定目录      
        
    • DEST_PATH不存在      
          
      • 将DEST_PATH创建为目录,并将源目录的内容复制到此目录中
      •   
    •   
    • DEST_PATH存在且是一个文件      
          
      • 错误情况:无法将目录复制到文件
      •   
    •   
    • DEST_PATH存在且是一个目录      
          
      • SRC_PATH不以/结尾。      
            
        • 将源目录复制到此目录
        •   
      •   
      • SRC_PATH以/结尾。      
            
        • 将源目录的内容复制到此目录中
        •   
      •   
    •   
  •   

因此DEST_PATH不存在或者它确实存在,而docker cp命令实际上是docker cp child-dir/ uncle-dir(带有斜杠)。