code: func (tx *Tx) WriteTo(w io.Writer) (n int64, err error) {
  	// Attempt to open reader with WriteFlag
  	f, err := os.OpenFile(tx.db.path, os.O_RDONLY|tx.WriteFlag, 0)
  	if err != nil {
  		return 0, err
  	}
  	defer func() { _ = f.Close() }()
  
  	// Generate a meta page. We use the same page data for both meta pages.
  	buf := make([]byte, tx.db.pageSize)
  	page := (*page)(unsafe.Pointer(&buf[0]))
  	page.flags = metaPageFlag
  	*page.meta() = *tx.meta
  
  	// Write meta 0.
  	page.id = 0
  	page.meta().checksum = page.meta().sum64()
  	nn, err := w.Write(buf)
  	n += int64(nn)
  	if err != nil {
  		return n, fmt.Errorf("meta 0 copy: %s", err)
  	}
  
  	// Write meta 1 with a lower transaction id.
  	page.id = 1
  	page.meta().txid -= 1
  	page.meta().checksum = page.meta().sum64()
  	nn, err = w.Write(buf)
  	n += int64(nn)
  	if err != nil {
  		return n, fmt.Errorf("meta 1 copy: %s", err)
  	}
  
  	// Move past the meta pages in the file.
  	if _, err := f.Seek(int64(tx.db.pageSize*2), os.SEEK_SET); err != nil {
  		return n, fmt.Errorf("seek: %s", err)
  	}
  
  	// Copy data pages.
  	wn, err := io.CopyN(w, f, tx.Size()-int64(tx.db.pageSize*2))
  	n += wn
  	if err != nil {
  		return n, err
  	}
  
  	return n, f.Close()
  }
docs: // WriteTo writes the entire database to a writer.
  // If err == nil then exactly tx.Size() bytes will be written into the writer.