static function copy($srcDir, $destDir, $overwrite = true) {
        Directory::create($destDir);

        $dir = new \DirectoryIterator($srcDir);
        foreach ($dir as $dirContent) {
            if ($dirContent->isFile() || $dirContent->isLink()) {
                $target = $destDir.'/'.$dirContent->getFilename();
                if ($overwrite || !file_exists($target)) {
                    copy($dirContent->getPathName(), $target);
                }
            } else if (!$dirContent->isDot() && $dirContent->isDir()) {
                self::copy($dirContent->getPathName(), $destDir.'/'.$dirContent->getFilename(), $overwrite);
            }
        }
    }