@@ 45,7 45,12 @@ func svalbard(dirname string) {
elog.Fatalf("can't create directory: %s", dirname)
}
now := time.Now().Unix()
- backupdbname := fmt.Sprintf("%s/honk-%d.db", dirname, now)
+ dirname = fmt.Sprintf("%s/honk-%d", dirname, now)
+ err = os.Mkdir(dirname, 0700)
+ if err != nil {
+ elog.Fatalf("can't create directory: %s", dirname)
+ }
+ backupdbname := fmt.Sprintf("%s/honk.db", dirname)
backup, err := sql.Open("sqlite3", backupdbname)
if err != nil {
elog.Fatalf("can't open backup database")
@@ 154,18 159,26 @@ func svalbard(dirname string) {
}
filexids := make(map[string]bool)
for f := range fileids {
- rows = qordie(orig, "select fileid, xid, name, description, url, media, local from filemeta where fileid = ?", f)
+ rows = qordie(orig, "select fileid, xid, name, description, url, media, local, meta from filemeta where fileid = ?", f)
for rows.Next() {
var fileid int64
- var xid, name, description, url, media string
+ var xid, name, description, url, media, meta string
var local int64
- scanordie(rows, &fileid, &xid, &name, &description, &url, &media, &local)
+ scanordie(rows, &fileid, &xid, &name, &description, &url, &media, &local, &meta)
filexids[xid] = true
- doordie(tx, "insert into filemeta (fileid, xid, name, description, url, media, local) values (?, ?, ?, ?, ?, ?, ?)", fileid, xid, name, description, url, media, local)
+ doordie(tx, "insert into filemeta (fileid, xid, name, description, url, media, local, meta) values (?, ?, ?, ?, ?, ?, ?, ?)", fileid, xid, name, description, url, media, local, meta)
}
rows.Close()
}
-
+ for xid := range filexids {
+ rows = qordie(orig, "select media, hash from filehashes where xid = ?", xid)
+ for rows.Next() {
+ var media, hash string
+ scanordie(rows, &media, &hash)
+ doordie(tx, "insert into filehashes (xid, media, hash) values (?, ?, ?)", xid, media, hash)
+ }
+ rows.Close()
+ }
rows = qordie(orig, "select key, value from config")
for rows.Next() {
var key string
@@ 184,11 197,11 @@ func svalbard(dirname string) {
var blob *sql.DB
var filesavepath string
if storeTheFilesInTheFileSystem {
- filesavepath = fmt.Sprintf("%s/attachments-%d", dirname, now)
+ filesavepath = fmt.Sprintf("%s/attachments", dirname)
os.Mkdir(filesavepath, 0700)
filesavepath += "/"
} else {
- backupblobname := fmt.Sprintf("%s/blob-%d.db", dirname, now)
+ backupblobname := fmt.Sprintf("%s/blob.db", dirname)
blob, err = sql.Open("sqlite3", backupblobname)
if err != nil {
elog.Fatalf("can't open backup blob database")
@@ 238,4 251,5 @@ func svalbard(dirname string) {
}
blob.Close()
}
+ fmt.Printf("backup saved to %s\n", dirname)
}