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 }