/
castle-backup.go
74 lines (72 loc) · 2.65 KB
/
castle-backup.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import (
"castle/backup"
)
func main() {
/* var blobStorage blob.BlobStorage
var objectStorage object.ObjectStorage
var err error
switch(os.Args[1]) {
case "init":
fmt.Print("Creating a new object database...\n")
blobStorage, _ := blob.NewFileBasedBlobStorage(".objects")
blobStorage.PutWithId("source", []byte(os.Args[2]))
blobStorage.PutWithId("HEAD", []byte(""))
fmt.Printf("Saving source directory: %s\n", os.Args[2])
case "backup":
var backupDir, previous []byte
var objRef string
if blobStorage, err = blob.NewFileBasedBlobStorage(".objects"); err != nil {
fmt.Print("Error loading object database. Are you running %s from the correct directory?\n")
os.Exit(-1)
}
objectStorage = object.NewJSONStorage(blobStorage)
if backupDir, err = blobStorage.Get("source"); err != nil {
fmt.Printf("Error loading source information. %s\n", err.Error())
os.Exit(-1)
}
if previous, err = blobStorage.Get("HEAD"); err != nil {
fmt.Print("Error loading HEAD information.\n")
os.Exit(-1)
}
fmt.Printf("Starting backup of %s\n", string(backupDir))
if objRef, err = backup.CreateBackup(os.Args[2], string(previous), string(backupDir), blobStorage, objectStorage); err != nil {
fmt.Printf("Error creating backup: %s.\n", err.Error())
os.Exit(-1)
}
blobStorage.PutWithId("HEAD", []byte(objRef))
fmt.Printf("Backup completed. Backup %s\n", objRef)
case "log":
if blobStorage, err = blob.NewFileBasedBlobStorage(".objects"); err != nil {
fmt.Print("Error loading object database. Are you running %s from the correct directory?\n")
os.Exit(-1)
}
objectStorage = object.NewJSONStorage(blobStorage)
var head []byte
var history []backup.Backup
if head, err = blobStorage.Get("HEAD"); err != nil {
fmt.Print("Error loading HEAD information.\n")
os.Exit(-1)
}
if history, err = backup.GetBackupHistory(string(head), objectStorage); err != nil {
fmt.Printf("Error loading backup log. %s\n", err.Error())
os.Exit(-1)
}
for _, v := range(history) {
fmt.Printf("Name: %s\nId: %s\nDate: %s\n\n", v.Name, v.Current, time.Unix(v.Date,0))
}
case "migrate":
if blobStorage, err = blob.NewFileBasedBlobStorage(".objects"); err != nil {
fmt.Print("Error loading object database. Are you running %s from the correct directory?\n")
os.Exit(-1)
}
objectStorage = object.NewJSONStorage(blobStorage)
if err = backup.ReconstructTree(os.Args[2], os.Args[3], blobStorage, objectStorage); err != nil {
fmt.Printf("Error migrating to version %s", os.Args[2])
os.Exit(-1)
}
fmt.Print("Migration completed\n")
}
*/
backup.Main()
}