Runtime Directories & UNIX Sockets
The zrepl daemon needs to open various UNIX sockets in a runtime directory:
controlsocket that the CLI commands use to interact with the daemon
the ssh+stdinserver Transport listener opens one socket per configured client, named after
There is no authentication on these sockets except the UNIX permissions. The zrepl daemon will refuse to bind any of the above sockets in a directory that is world-accessible.
The following sections of the
global config shows the default paths.
The shell script below shows how the default runtime directory can be created.
global: control: sockpath: /var/run/zrepl/control serve: stdinserver: sockdir: /var/run/zrepl/stdinserver
mkdir -p /var/run/zrepl/stdinserver chmod -R 0700 /var/run/zrepl
Durations & Intervals
Interval & duration fields in job definitions, pruning configurations, etc. must match the following regex:
var durationStringRegex *regexp.Regexp = regexp.MustCompile(`^\s*(\d+)\s*(s|m|h|d|w)\s*$`) // s = second, m = minute, h = hour, d = day, w = week (7 days)
Super-Verbose Job Debugging
You have probably landed here because you opened an issue on GitHub and some developer told you to do this… So just read the annotated comments ;)
job: - name: ... ... # JOB DEBUGGING OPTIONS # should be equal for all job types, but each job implements the debugging itself debug: conn: # debug the io.ReadWriteCloser connection read_dump: /tmp/connlog_read # dump results of Read() invocations to this file write_dump: /tmp/connlog_write # dump results of Write() invocations to this file rpc: # debug the RPC protocol implementation log: true # log output from rpc layer to the job log
Connection dumps will almost certainly contain your or other’s private data. Do not share it in a bug report.