def moveFile(self, old, dest, forcemove = False): dest = ss(dest) try: if forcemove: shutil.move(old, dest) elif self.conf('file_action') == 'hardlink': link(old, dest) elif self.conf('file_action') == 'symlink': symlink(old, dest) elif self.conf('file_action') == 'copy': shutil.copy(old, dest) elif self.conf('file_action') == 'move_symlink': shutil.move(old, dest) symlink(dest, old) else: shutil.move(old, dest) try: os.chmod(dest, Env.getPermission('file')) if os.name == 'nt' and self.conf('ntfs_permission'): os.popen('icacls "' + dest + '"* /reset /T') except: log.error('Failed setting permissions for file: %s, %s', (dest, traceback.format_exc(1))) except OSError, err: # Copying from a filesystem with octal permission to an NTFS file system causes a permission error. In this case ignore it. if not hasattr(os, 'chmod') or err.errno != errno.EPERM: raise else: if os.path.exists(dest): os.unlink(old)
def moveFile(self, old, dest, forcemove = False): dest = ss(dest) try: if forcemove: try: os.chmod(old,0777) except: pass # ignore all error, if important will raise error later shutil.move(old, dest) elif self.conf('file_action') == 'copy': try: os.chmod(old,0777) except: pass # ignore all error, if important will raise error later shutil.copy(old, dest) elif self.conf('file_action') == 'link': # First try to hardlink try: log.debug('Hardlinking file "%s" to "%s"...', (old, dest)) link(old, dest) except: # Try to simlink next log.debug('Couldn\'t hardlink file "%s" to "%s". Simlinking instead. Error: %s. ', (old, dest, traceback.format_exc())) shutil.copy(old, dest) try: symlink(dest, old + '.link') os.unlink(old) os.rename(old + '.link', old) except: log.error('Couldn\'t symlink file "%s" to "%s". Copied instead. Error: %s. ', (old, dest, traceback.format_exc())) else: try: os.chmod(old,0777) except: pass # ignore all error, if important will raise error later shutil.move(old, dest) try: os.chmod(dest, Env.getPermission('file')) if os.name == 'nt' and self.conf('ntfs_permission'): os.popen('icacls "' + dest + '"* /reset /T') if os.name != 'nt': try: uid = Env.getOwnership('user') gid = Env.getOwnership('group') os.chown(dest,uid,gid) except: log.error('Failed setting ownership for file: %s, %s', (dest, traceback.format_exc(1))) except: log.error('Failed setting permissions for file: %s, %s', (dest, traceback.format_exc(1))) except OSError, err: # Copying from a filesystem with octal permission to an NTFS file system causes a permission error. In this case ignore it. if not hasattr(os, 'chmod') or err.errno != errno.EPERM: raise else: if os.path.exists(dest): os.unlink(old)