github.com/cosmos/cosmos-sdk@v0.50.10/client/snapshot/export.go (about)

     1  package snapshot
     2  
     3  import (
     4  	"github.com/spf13/cobra"
     5  
     6  	"cosmossdk.io/log"
     7  
     8  	"github.com/cosmos/cosmos-sdk/server"
     9  	servertypes "github.com/cosmos/cosmos-sdk/server/types"
    10  )
    11  
    12  // ExportSnapshotCmd returns a command to take a snapshot of the application state
    13  func ExportSnapshotCmd(appCreator servertypes.AppCreator) *cobra.Command {
    14  	cmd := &cobra.Command{
    15  		Use:   "export",
    16  		Short: "Export app state to snapshot store",
    17  		Args:  cobra.NoArgs,
    18  		RunE: func(cmd *cobra.Command, args []string) error {
    19  			ctx := server.GetServerContextFromCmd(cmd)
    20  
    21  			height, err := cmd.Flags().GetInt64("height")
    22  			if err != nil {
    23  				return err
    24  			}
    25  
    26  			home := ctx.Config.RootDir
    27  			db, err := openDB(home, server.GetAppDBBackend(ctx.Viper))
    28  			if err != nil {
    29  				return err
    30  			}
    31  			logger := log.NewLogger(cmd.OutOrStdout())
    32  			app := appCreator(logger, db, nil, ctx.Viper)
    33  
    34  			if height == 0 {
    35  				height = app.CommitMultiStore().LastCommitID().Version
    36  			}
    37  
    38  			cmd.Printf("Exporting snapshot for height %d\n", height)
    39  
    40  			sm := app.SnapshotManager()
    41  			snapshot, err := sm.Create(uint64(height))
    42  			if err != nil {
    43  				return err
    44  			}
    45  
    46  			cmd.Printf("Snapshot created at height %d, format %d, chunks %d\n", snapshot.Height, snapshot.Format, snapshot.Chunks)
    47  			return nil
    48  		},
    49  	}
    50  
    51  	cmd.Flags().Int64("height", 0, "Height to export, default to latest state height")
    52  
    53  	return cmd
    54  }