public static void archiveStoreFile(Configuration conf, FileSystem fs, RegionInfo regionInfo,
    Path tableDir, byte[] family, Path storeFile) throws IOException {
    Path storeArchiveDir = HFileArchiveUtil.getStoreArchivePath(conf, regionInfo, tableDir, family);
    // make sure we don't archive if we can't and that the archive dir exists
    if (!fs.mkdirs(storeArchiveDir)) {
      throw new IOException("Could not make archive directory (" + storeArchiveDir + ") for store:"
        + Bytes.toString(family) + ", deleting compacted files instead.");
    }

    // do the actual archive
    long start = EnvironmentEdgeManager.currentTime();
    File file = new FileablePath(fs, storeFile);
    if (!resolveAndArchiveFile(storeArchiveDir, file, Long.toString(start))) {
      throw new IOException("Failed to archive/delete the file for region:"
        + regionInfo.getRegionNameAsString() + ", family:" + Bytes.toString(family) + " into "
        + storeArchiveDir + ". Something is probably awry on the filesystem.");
    }
  }
Archive the store file
@param fs         the filesystem where the store files live
@param regionInfo region hosting the store files
@param conf       {@link Configuration} to examine to determine the archive directory
@param tableDir   {@link Path} to where the table is being stored (for building the archive
                  path)
@param family     the family hosting the store files
@param storeFile  file to be archived
@throws IOException if the files could not be correctly disposed.
hbase-server/src/main/java/org/apache/hadoop/hbase/backup/HFileArchiver.java