Hi,
On 12/29/2011 01:35 PM, Timo Sirainen wrote:
doveadm already supports some nice things, such as being able to remotely
launch a doveadm command via TCP socket. It also supports executing a command
for all users or to some specific users using a wildcard. dsync could use these
features, so I merged dsync and doveadm into same binary for v2.1.
I'll still install "dsync" symlink pointing to "doveadm", and running that way
it should be fully backwards compatible with the old dsync binary and its parameters.
I'm mainly now wondering about the command naming for running dsync via
doveadm. Any suggestions?
a) Use "doveadm dsync" prefix, and otherwise keep the names same:
dsync mirror -> doveadm dsync mirror
dsync backup -> doveadm dsync backup
dsync server -> doveadm dsync server (for running dsync remotely via ssh/etc.)
b) Don't have the dsync prefix:
dsync mirror -> doveadm mirror
dsync backup -> doveadm backup
dsync server -> doveadm dsync-server (could be hidden from the doveadm
commands list)
c) Either a) or b), but rename "mirror" to "sync" or "dsync" or "replicate"?
d) Something else?
Slightly different, but it would be good to have a persistently running
daemon which could operate both in server and client mode.
In server mode it would listen on a TCP socket. In client mode it would
accept source and target information via a control socket. The target IP
address and port would be the daemon's listening socket.
Something like this on the server side:
service dsync {
process_limit = 8
client_limit = 8
inet_listener dsync {
port = 5555
}
Then doveadm sync on the "client) could first connect to the local
server (client), which then connects to the remote service on the
server. Eg.:
doveadm sync [-C <alt char>] [-m <mailbox>] [-u <user>] [-frRv]
mirror <local mail_location> | [<user>@]<host>
where user@host should specify the remote user (mailbox user) and host
should read like 1.1.1.1:1234 (IP address|hostname and port where the
dsync service listens. Or a separate port option to allow easier parsing.
Having the client in a persistent setup would allow faster syncs for
repeated invocations. It would be good to have a simple API to trigger
the sync (a simple text protocol on a unix socket, or something) from
outside programs, to avoid calling doveadm.
The next thing would be to follow dovecot logs and do a sync/async
replication. :)