throws Throwable, RestFSException {
        boolean fetchSucceed = false;
        if(rfs.fileStatus(source).isDir()) {
            Utils.mkdirs(dest);
            RestFileStatus statuses[] = rfs.listStatus(source).toArray();
            if(statuses != null && statuses.length > 0) {
                // sort the files so that index files come last. Maybe
                // this will help keep them cached until the swap
                Arrays.sort(statuses, new IndexFileLastComparator());
                byte[] origCheckSum = null;