add an option "rsync_override"

This commit is contained in:
z4yx 2020-03-13 15:12:52 +08:00
parent d48815b817
commit 02468e21c0
3 changed files with 20 additions and 14 deletions

View File

@ -137,6 +137,7 @@ type mirrorConfig struct {
Username string `toml:"username"` Username string `toml:"username"`
Password string `toml:"password"` Password string `toml:"password"`
RsyncOptions []string `toml:"rsync_options"` RsyncOptions []string `toml:"rsync_options"`
RsyncOverride []string `toml:"rsync_override"`
Stage1Profile string `toml:"stage1_profile"` Stage1Profile string `toml:"stage1_profile"`
MemoryLimit string `toml:"memory_limit"` MemoryLimit string `toml:"memory_limit"`

View File

@ -127,20 +127,21 @@ func newMirrorProvider(mirror mirrorConfig, cfg *Config) mirrorProvider {
provider = p provider = p
case provRsync: case provRsync:
rc := rsyncConfig{ rc := rsyncConfig{
name: mirror.Name, name: mirror.Name,
upstreamURL: mirror.Upstream, upstreamURL: mirror.Upstream,
rsyncCmd: mirror.Command, rsyncCmd: mirror.Command,
username: mirror.Username, username: mirror.Username,
password: mirror.Password, password: mirror.Password,
excludeFile: mirror.ExcludeFile, excludeFile: mirror.ExcludeFile,
extraOptions: mirror.RsyncOptions, extraOptions: mirror.RsyncOptions,
workingDir: mirrorDir, overriddenOptions: mirror.RsyncOverride,
logDir: logDir, workingDir: mirrorDir,
logFile: filepath.Join(logDir, "latest.log"), logDir: logDir,
useIPv6: mirror.UseIPv6, logFile: filepath.Join(logDir, "latest.log"),
useIPv4: mirror.UseIPv4, useIPv6: mirror.UseIPv6,
interval: time.Duration(mirror.Interval) * time.Minute, useIPv4: mirror.UseIPv4,
retry: mirror.Retry, interval: time.Duration(mirror.Interval) * time.Minute,
retry: mirror.Retry,
} }
p, err := newRsyncProvider(rc) p, err := newRsyncProvider(rc)
if err != nil { if err != nil {

View File

@ -14,6 +14,7 @@ type rsyncConfig struct {
rsyncCmd string rsyncCmd string
upstreamURL, username, password, excludeFile string upstreamURL, username, password, excludeFile string
extraOptions []string extraOptions []string
overriddenOptions []string
workingDir, logDir, logFile string workingDir, logDir, logFile string
useIPv6, useIPv4 bool useIPv6, useIPv4 bool
interval time.Duration interval time.Duration
@ -56,6 +57,9 @@ func newRsyncProvider(c rsyncConfig) (*rsyncProvider, error) {
"--delete", "--delete-after", "--delay-updates", "--delete", "--delete-after", "--delay-updates",
"--safe-links", "--timeout=120", "--contimeout=120", "--safe-links", "--timeout=120", "--contimeout=120",
} }
if overriddenOptions != nil {
options = overriddenOptions
}
if c.useIPv6 { if c.useIPv6 {
options = append(options, "-6") options = append(options, "-6")