1
0
Fork 0
mirror of https://github.com/chrislusf/seaweedfs synced 2024-07-03 15:46:44 +02:00

replication to todays date directory

This commit is contained in:
Konstantin Lebedev 2021-01-27 12:45:58 +05:00
parent 5e07afb0f0
commit 3634811408
4 changed files with 20 additions and 8 deletions

View file

@ -11,6 +11,7 @@ enabled = true
# This URL will Dial the RabbitMQ server at the URL in the environment # This URL will Dial the RabbitMQ server at the URL in the environment
# variable RABBIT_SERVER_URL and open the exchange "myexchange". # variable RABBIT_SERVER_URL and open the exchange "myexchange".
# The exchange must have already been created by some other means, like # The exchange must have already been created by some other means, like
# the RabbitMQ management plugin. # the RabbitMQ management plugin. Сreate myexchange of type fanout and myqueue then
# create binding myexchange => myqueue
topic_url = "rabbit://swexchange" topic_url = "rabbit://swexchange"
sub_url = "rabbit://swqueue" sub_url = "rabbit://swqueue"

View file

@ -9,3 +9,4 @@ directory = "/buckets"
[sink.local] [sink.local]
enabled = true enabled = true
directory = "/data" directory = "/data"
todays_date_format = "2006-02-01"

View file

@ -329,7 +329,8 @@ enabled = false
# This URL will Dial the RabbitMQ server at the URL in the environment # This URL will Dial the RabbitMQ server at the URL in the environment
# variable RABBIT_SERVER_URL and open the exchange "myexchange". # variable RABBIT_SERVER_URL and open the exchange "myexchange".
# The exchange must have already been created by some other means, like # The exchange must have already been created by some other means, like
# the RabbitMQ management plugin. # the RabbitMQ management plugin. Сreate myexchange of type fanout and myqueue then
# create binding myexchange => myqueue
topic_url = "rabbit://myexchange" topic_url = "rabbit://myexchange"
sub_url = "rabbit://myqueue" sub_url = "rabbit://myqueue"
` `
@ -353,6 +354,8 @@ directory = "/buckets"
[sink.local] [sink.local]
enabled = false enabled = false
directory = "/backup" directory = "/backup"
# all replicated files are under todays date directory tree
todays_date_format = ""
[sink.filer] [sink.filer]
enabled = false enabled = false

View file

@ -12,10 +12,12 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
"time"
) )
type LocalSink struct { type LocalSink struct {
dir string dir string
todaysDateFormat string
filerSource *source.FilerSource filerSource *source.FilerSource
} }
@ -35,18 +37,23 @@ func (localsink *LocalSink) isMultiPartEntry(key string) bool {
return strings.HasSuffix(key, ".part") && strings.Contains(key, "/.uploads/") return strings.HasSuffix(key, ".part") && strings.Contains(key, "/.uploads/")
} }
func (localsink *LocalSink) initialize(dir string) error { func (localsink *LocalSink) initialize(dir string, todaysDateFormat string) error {
localsink.dir = dir localsink.dir = dir
localsink.todaysDateFormat = todaysDateFormat
return nil return nil
} }
func (localsink *LocalSink) Initialize(configuration util.Configuration, prefix string) error { func (localsink *LocalSink) Initialize(configuration util.Configuration, prefix string) error {
dir := configuration.GetString(prefix + "directory") dir := configuration.GetString(prefix + "directory")
todaysDateFormat := configuration.GetString(prefix + "todays_date_format")
glog.V(4).Infof("sink.local.directory: %v", dir) glog.V(4).Infof("sink.local.directory: %v", dir)
return localsink.initialize(dir) return localsink.initialize(dir, todaysDateFormat)
} }
func (localsink *LocalSink) GetSinkToDirectory() string { func (localsink *LocalSink) GetSinkToDirectory() string {
if localsink.todaysDateFormat != "" {
return filepath.Join(localsink.dir, time.Now().Format(localsink.todaysDateFormat))
}
return localsink.dir return localsink.dir
} }
@ -56,7 +63,7 @@ func (localsink *LocalSink) DeleteEntry(key string, isDirectory, deleteIncludeCh
} }
glog.V(4).Infof("Delete Entry key: %s", key) glog.V(4).Infof("Delete Entry key: %s", key)
if err := os.Remove(key); err != nil { if err := os.Remove(key); err != nil {
return err glog.V(0).Infof("remove entry key %s: %s", key, err)
} }
return nil return nil
} }