diff --git a/cmd/geth/chaincmd.go b/cmd/geth/chaincmd.go
index 947532f408b1151fba870a30024c6f8468b1026f..509356a9047cf0b2f2272ec5a186a3e84c534d2c 100644
--- a/cmd/geth/chaincmd.go
+++ b/cmd/geth/chaincmd.go
@@ -26,6 +26,12 @@ var (
 		Action: exportChain,
 		Name:   "export",
 		Usage:  `export blockchain into file`,
+		Description: `
+Requires a first argument of the file to write to.
+Optional second and third arguments control the first and
+last block to write. In this mode, the file will be appended
+if already existing.
+		`,
 	}
 	upgradedbCommand = cli.Command{
 		Action: upgradeDB,
@@ -68,7 +74,21 @@ func exportChain(ctx *cli.Context) {
 	}
 	chain, _, _, _ := utils.MakeChain(ctx)
 	start := time.Now()
-	if err := utils.ExportChain(chain, ctx.Args().First()); err != nil {
+
+	var err error
+	if len(ctx.Args()) < 3 {
+		err = utils.ExportChain(chain, ctx.Args().First())
+	} else {
+		// This can be improved to allow for numbers larger than 9223372036854775807
+		first, ferr := strconv.ParseInt(ctx.Args().Get(1), 10, 64)
+		last, lerr := strconv.ParseInt(ctx.Args().Get(2), 10, 64)
+		if ferr != nil || lerr != nil {
+			utils.Fatalf("Export error in parsing parameters\n")
+		}
+		err = utils.ExportAppendChain(chain, ctx.Args().First(), uint64(first), uint64(last))
+	}
+
+	if err != nil {
 		utils.Fatalf("Export error: %v\n", err)
 	}
 	fmt.Printf("Export done in %v", time.Since(start))
diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go
index e5413973de8c675578507c77a2c5563781bc5e1f..f7520a8e4c135d726b6ec3d51d1fbb80a8b36bf0 100644
--- a/cmd/utils/cmd.go
+++ b/cmd/utils/cmd.go
@@ -268,3 +268,18 @@ func ExportChain(chainmgr *core.ChainManager, fn string) error {
 	glog.Infoln("Exported blockchain to", fn)
 	return nil
 }
+
+func ExportAppendChain(chainmgr *core.ChainManager, fn string, first uint64, last uint64) error {
+	glog.Infoln("Exporting blockchain to", fn)
+	// TODO verify mode perms
+	fh, err := os.OpenFile(fn, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModePerm)
+	if err != nil {
+		return err
+	}
+	defer fh.Close()
+	if err := chainmgr.ExportN(fh, first, last); err != nil {
+		return err
+	}
+	glog.Infoln("Exported blockchain to", fn)
+	return nil
+}