From d522a1be97a3a1ec0fd1daee25f7debd5db01561 2014-02-09 06:49:09 From: Brian E. Granger Date: 2014-02-09 06:49:09 Subject: [PATCH] Merge pull request #4977 from minrk/scp-mkdir-p ensure scp destination directories exist (with mkdir -p) --- diff --git a/IPython/parallel/apps/launcher.py b/IPython/parallel/apps/launcher.py index 368d787..67a53b5 100644 --- a/IPython/parallel/apps/launcher.py +++ b/IPython/parallel/apps/launcher.py @@ -600,6 +600,11 @@ class SSHLauncher(LocalProcessLauncher): time.sleep(1) else: break + remote_dir = os.path.dirname(remote) + self.log.info("ensuring remote %s:%s/ exists", self.location, remote_dir) + check_output(self.ssh_cmd + self.ssh_args + \ + [self.location, 'mkdir', '-p', '--', remote_dir] + ) self.log.info("sending %s to %s", local, remote) check_output(self.scp_cmd + [local, remote]) @@ -623,6 +628,9 @@ class SSHLauncher(LocalProcessLauncher): time.sleep(1) elif check == u'yes': break + local_dir = os.path.dirname(local) + if not os.path.exists(local_dir): + os.makedirs(local_dir, 775) check_output(self.scp_cmd + [full_remote, local]) def fetch_files(self):