diff options
Diffstat (limited to 'go/weed/backup.go')
| -rw-r--r-- | go/weed/backup.go | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/go/weed/backup.go b/go/weed/backup.go deleted file mode 100644 index 5e51a8b03..000000000 --- a/go/weed/backup.go +++ /dev/null @@ -1,90 +0,0 @@ -package main - -import ( - "fmt" - - "github.com/chrislusf/seaweedfs/go/operation" - "github.com/chrislusf/seaweedfs/go/storage" -) - -var ( - s BackupOptions -) - -type BackupOptions struct { - master *string - collection *string - dir *string - volumeId *int -} - -func init() { - cmdBackup.Run = runBackup // break init cycle - s.master = cmdBackup.Flag.String("server", "localhost:9333", "SeaweedFS master location") - s.collection = cmdBackup.Flag.String("collection", "", "collection name") - s.dir = cmdBackup.Flag.String("dir", ".", "directory to store volume data files") - s.volumeId = cmdBackup.Flag.Int("volumeId", -1, "a volume id. The volume .dat and .idx files should already exist in the dir.") -} - -var cmdBackup = &Command{ - UsageLine: "backup -dir=. -volumeId=234 -server=localhost:9333", - Short: "incrementally backup a volume to local folder", - Long: `Incrementally backup volume data. - - It is expected that you use this inside a script, to loop through - all possible volume ids that needs to be backup to local folder. - - The volume id does not need to exist locally or even remotely. - This will help to backup future new volumes. - - Usually backing up is just copying the .dat (and .idx) files. - But it's tricky to incremententally copy the differences. - - The complexity comes when there are multiple addition, deletion and compaction. - This tool will handle them correctly and efficiently, avoiding unnecessary data transporation. - `, -} - -func runBackup(cmd *Command, args []string) bool { - if *s.volumeId == -1 { - return false - } - vid := storage.VolumeId(*s.volumeId) - - // find volume location, replication, ttl info - lookup, err := operation.Lookup(*s.master, vid.String()) - if err != nil { - fmt.Printf("Error looking up volume %d: %v\n", vid, err) - return true - } - volumeServer := lookup.Locations[0].Url - - stats, err := operation.GetVolumeSyncStatus(volumeServer, vid.String()) - if err != nil { - fmt.Printf("Error get volume %d status: %v\n", vid, err) - return true - } - ttl, err := storage.ReadTTL(stats.Ttl) - if err != nil { - fmt.Printf("Error get volume %d ttl %s: %v\n", vid, stats.Ttl, err) - return true - } - replication, err := storage.NewReplicaPlacementFromString(stats.Replication) - if err != nil { - fmt.Printf("Error get volume %d replication %s : %v\n", vid, stats.Replication, err) - return true - } - - v, err := storage.NewVolume(*s.dir, *s.collection, vid, storage.NeedleMapInMemory, replication, ttl) - if err != nil { - fmt.Printf("Error creating or reading from volume %d: %v\n", vid, err) - return true - } - - if err := v.Synchronize(volumeServer); err != nil { - fmt.Printf("Error synchronizing volume %d: %v\n", vid, err) - return true - } - - return true -} |
