> (you don't have to strictly follow this form)

**Use case**

Support manually snapshot for Keeper.

**Describe the solution you'd like**

Throught 4lw commands, such as `csnp`.


: IFourLetterCommand(keeper_dispatcher_)
    {
    }
    String name() override { return "isro"; }
    String run() override;
    ~IsReadOnlyCommand() override = default;
};
struct RecoveryCommand : public IFourLetterCommand
{
    explicit RecoveryCommand(KeeperDispatcher & keeper_dispatcher_)
        : IFourLetterCommand(keeper_dispatcher_)
    {
    }
    String name() override { return "rcvr"; }
    String run() override;
    ~RecoveryCommand() override = default;
};
struct ApiVersionCommand : public IFourLetterCommand
{
    explicit ApiVersionCommand(KeeperDispatcher & keeper_dispatcher_)
        : IFourLetterCommand(keeper_dispatcher_)
    {
    }
    String name() override { return "apiv"; }
    String run() override;
    ~ApiVersionCommand() override = default;
};
}