code: public boolean persistFile(State state, CopyableFile file, Path path) throws IOException {
  
      if (!this.persistDir.isPresent()) {
        return false;
      }
  
      String guid = computeGuid(state, file);
      Path guidPath = new Path(this.persistDir.get(), guid);
  
      if (!this.fs.exists(guidPath)) {
        this.fs.mkdirs(guidPath, new FsPermission(FsAction.ALL, FsAction.READ, FsAction.NONE));
      }
  
      Path targetPath = new Path(guidPath, shortenPathName(file.getOrigin().getPath(), 250 - guid.length()));
      log.info(String.format("Persisting file %s with guid %s to location %s.", path, guid, targetPath));
      if (this.fs.rename(path, targetPath)) {
        this.fs.setTimes(targetPath, System.currentTimeMillis(), -1);
        return true;
      }
      return false;
    }
docs: Moves a copied path into a persistent location managed by gobblin-distcp. This method is used when an already
  copied file cannot be successfully published. In future runs, instead of re-copying the file, distcp will use the
  persisted file.
  
  @param state {@link State} containing job information.
  @param file {@link org.apache.gobblin.data.management.copy.CopyEntity} from which input {@link Path} originated.
  @param path {@link Path} to persist.
  @return true if persist was successful.
  @throws IOException