mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 21:00:22 -07:00
Revert "Fix for recursive copy slowness"
This reverts commit 78ced5318f
.
The fix for copy slowness did not handle circular symlinks.
This commit is contained in:
parent
556a1daa33
commit
753a3a03d0
2 changed files with 21 additions and 46 deletions
|
@ -110,7 +110,7 @@ class ActionModule(ActionBase):
|
|||
sz = len(source.rsplit('/', 1)[0]) + 1
|
||||
|
||||
# Walk the directory and append the file tuples to source_files.
|
||||
for base_path, sub_folders, files in os.walk(to_bytes(source), followlinks=True):
|
||||
for base_path, sub_folders, files in os.walk(to_bytes(source)):
|
||||
for file in files:
|
||||
full_path = to_text(os.path.join(base_path, file), errors='surrogate_or_strict')
|
||||
rel_path = full_path[sz:]
|
||||
|
@ -118,6 +118,10 @@ class ActionModule(ActionBase):
|
|||
rel_path = rel_path[1:]
|
||||
source_files.append((full_path, rel_path))
|
||||
|
||||
# recurse into subdirs
|
||||
for sf in sub_folders:
|
||||
source_files += self._get_recursive_files(os.path.join(source, to_text(sf)), sz=sz)
|
||||
|
||||
# If it's recursive copy, destination is always a dir,
|
||||
# explicitly mark it so (note - copy module relies on this).
|
||||
if not self._connection._shell.path_has_trailing_slash(dest):
|
||||
|
@ -327,6 +331,22 @@ class ActionModule(ActionBase):
|
|||
|
||||
return result
|
||||
|
||||
def _get_recursive_files(self, topdir, sz=0):
|
||||
''' Recursively create file tuples for sub folders '''
|
||||
r_files = []
|
||||
for base_path, sub_folders, files in os.walk(to_bytes(topdir)):
|
||||
for fname in files:
|
||||
full_path = to_text(os.path.join(base_path, fname), errors='surrogate_or_strict')
|
||||
rel_path = full_path[sz:]
|
||||
if rel_path.startswith('/'):
|
||||
rel_path = rel_path[1:]
|
||||
r_files.append((full_path, rel_path))
|
||||
|
||||
for sf in sub_folders:
|
||||
r_files += self._get_recursive_files(os.path.join(topdir, to_text(sf)), sz=sz)
|
||||
|
||||
return r_files
|
||||
|
||||
def _create_content_tempfile(self, content):
|
||||
''' Create a tempfile containing defined content '''
|
||||
fd, content_tempfile = tempfile.mkstemp()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue