Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request kubernetes#51215 from juanvallejo/jvallejo/preserv…
…e-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
- Loading branch information