copy files instead of directories to give --remote-copy implementation a chance to dereference symlinks

also fixes #242 by filtering 'hidden' files (starting with a dot)

Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
This commit is contained in:
Steven Armstrong 2014-01-08 23:53:08 +01:00
parent 57b700d11b
commit 547c1f9c86

View file

@ -23,6 +23,7 @@
import io import io
import os import os
import sys import sys
import glob
import subprocess import subprocess
import logging import logging
@ -94,8 +95,16 @@ class Remote(object):
"""Transfer a file or directory to the remote side.""" """Transfer a file or directory to the remote side."""
self.log.debug("Remote transfer: %s -> %s", source, destination) self.log.debug("Remote transfer: %s -> %s", source, destination)
self.rmdir(destination) self.rmdir(destination)
if os.path.isdir(source):
self.mkdir(destination)
for f in glob.glob1(source, '*'):
command = self._copy.split() command = self._copy.split()
command.extend(["-r", source, self.target_host + ":" + destination]) path = os.path.join(source, f)
command.extend([path, '{0}:{1}'.format(self.target_host, destination)])
self._run_command(command)
else:
command = self._copy.split()
command.extend([source, '{0}:{1}'.format(self.target_host, destination)])
self._run_command(command) self._run_command(command)
def run_script(self, script, env=None, return_output=False): def run_script(self, script, env=None, return_output=False):