Files
kubernetes/pkg/kubectl/cmd
Kubernetes Submit Queue 7e384479d7 Merge pull request #51215 from juanvallejo/jvallejo/preserve-specified-destination-path
Automatic merge from submit-queue (batch tested with PRs 53668, 53624, 52639, 53581, 51215). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

preserve specified destination path

**Release note**:
```release-note
"kubectl cp" updated to honor destination names 
```

**Before**
```
$ kubectl cp foo_dir pod_name:/tmp/bar_dir
$ kubectl exec pod_name -it -- /bin/sh
sh-4.2$
sh-4.2$ ls /tmp
sh-4.2$ foo_dir
```

**After**
```
$ kubectl cp foo_dir pod_name:/tmp/bar_dir
$ kubectl exec pod_name -it -- /bin/sh
sh-4.2$
sh-4.2$ ls /tmp
sh-4.2$ bar_dir
```


**Notable changes to `kubectl cp` After This Patch**
- Copying a directory `bar_dir` to an existing directory in the pod will copy the directory itself, rather than just the file contents:

```bash
*Before*
> remote-pod-shell$ ls /tmp
                    existing_remote_dir              

$ kubectl cp ./my/local/awesome_dir mypod:/tmp/existing_remote_dir
> remote-pod-shell$ ls /tmp
                    existing_remote_dir
                    awesome_dir
```
```bash
*After*
> remote-pod-shell$ ls /tmp
                    existing_remote_dir              

$ kubectl cp ./my/local/awesome_dir mypod:/tmp/existing_remote_dir
> remote-pod-shell$ ls /tmp
                    existing_remote_dir
> remote-pod-shell$ ls /tmp/existing_remote_dir
                    awesome_dir
```

```
*Before*: Directory contents were merged if a local and remote directory shared the same name
*After*:  A new name will be honored for the copied local directory on the remote pod.
          If a new name was not specified for the local directory being copied, and it shares the
          same name as an already-existing directory on the pod, current behavior will follow and
          its contents will be added to those of the already-existing directory.
```

```
*Before*: If a trailing slash (e.g. kubectl cp ./local/dir pod:/tmp) was not added to a directory
          name in the destination path (...:/tmp vs /tmp/...), when copying to a pod, `kubectl`
          would attempt to copy the local directory under the parent of the remote directory
          rather than inside of it.
*After*:  Slashes do not alter the behavior of the command, or destination of the intended 
          source file or directory. With a command such as (kubectl cp ./local_dir pod:/tmp),
          `local_dir` would be copied inside of <pod:/tmp> (an error is returned if pod:/tmp is
           a file).
```

Related downstream bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1469411

@fabianofranz @kubernetes/sig-cli-misc
2017-10-11 17:00:08 -07:00
..
2017-08-16 12:27:36 -07:00
2017-06-05 11:06:48 +08:00
2017-08-16 12:27:36 -07:00
2017-10-03 09:44:11 -07:00
2017-08-16 12:27:36 -07:00
2017-06-26 11:38:36 -04:00
2017-10-03 08:18:21 -07:00
2017-10-10 18:16:10 -04:00
2017-10-10 18:16:10 -04:00
2017-08-16 12:27:36 -07:00
2017-08-16 12:27:36 -07:00
2017-08-16 12:27:36 -07:00
2017-08-16 12:27:36 -07:00
2017-08-16 12:27:36 -07:00
2017-10-03 08:18:21 -07:00
2017-08-16 10:58:51 +02:00
2017-10-06 11:55:36 -04:00
2017-06-30 15:00:24 -07:00
2017-08-16 12:27:36 -07:00
2017-08-16 12:27:36 -07:00
2017-06-05 11:06:48 +08:00
2017-08-16 12:27:36 -07:00
2017-09-14 16:23:23 -04:00
2017-08-16 12:27:36 -07:00
2017-08-16 12:27:36 -07:00
2017-10-03 08:18:21 -07:00
2017-05-11 20:09:31 +08:00
2017-10-03 08:18:21 -07:00
2017-08-16 12:27:36 -07:00
2017-08-16 10:58:51 +02:00
2017-08-17 18:08:26 -04:00
2017-08-17 18:08:26 -04:00
2017-08-16 12:27:36 -07:00