code: private void hardlinkOrCopy(File file, File destination) throws IOException {
  		// For Linux/UNIX, try a hard link first.
          Process link = Runtime.getRuntime().exec("ln "+file.getAbsolutePath()+" "+destination.getAbsolutePath());
          // TODO NTFS also supports hard links; add appropriate try
          try {
  			link.waitFor();
  		} catch (InterruptedException e) {
  			// TODO Auto-generated catch block
  			e.printStackTrace();
  		}
          if(link.exitValue()!=0) {
          	// hard link failed
              FileUtils.copyFile(file,destination);
          }
  	}
docs: Create a backup of this given file, first by trying a "hard
  link", then by using a copy if hard linking is unavailable
  (either because it is unsupported or the origin and checkpoint
  directories are on different volumes).
  
  @param file
  @param destination
  @throws IOException