final String destinationPathRoot = descriptor.getStringRepositoryRoot() + location + fileSystem.getSeparator() + name;
Files.walkFileTree(sourcePath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path currentFile, BasicFileAttributes basicFileAttributes) throws IOException {
Path destinationPath = fileSystem.provider().getPath(URI.create(destinationPathRoot
+ fileSystem.getSeparator() + sourcePath.relativize(currentFile)));
createIfNotExists(destinationPath);
fileSystem.provider().move(currentFile, destinationPath, StandardCopyOption.REPLACE_EXISTING);
return FileVisitResult.CONTINUE;