Rsync Server mit Docker

Problem / Beschreibung

Ich möchte von einem System in ein Docker-Volume auf einem anderen Host Daten kopieren. Auf dem Zielsystem ist nicht genügend Platz vorhanden, das die Daten zuerst auf dem Host und dann in das Volume verschoben werden können. Deshalb soll ein Sync direkt in das Ziel-Volume statt finden.

Dazu gibt es viele Ansätze und Lösungen. Hier soll eine Lösung mit rsync aufgezeigt werden.

Vorbereitung Zielsystem

Docker Container starten:

docker run -ti --rm --network proxy -p 1234:1234 -v prx-vol:/dest alpine bash

Rsync im Container installieren (apk install rsync) und konfiguieren: /etc/rsyncd.conf

use chroot = yes
read only = no
transfer logging = true
log file = /var/log/rsyncd.log
log format = %h %o %f %l %b

[dest]
path = /dest
read only = no
list = yes
#uid = nobody
#gid = nogroup
uid = root
gid = root

rsync als Deamon starten:

rsync --daemon --no-detach --port=1234 --config=/etc/rsyncd.conf --verbose

Einblick erhalten:

tail -f /var/log/rsyncd.log

Daten kopieren

rsync -vPr /path/to/data --port=1234 192.0.2.2::dest

Anmerkungen / Hinweise

Eine Authentifizerung findet nicht statt und in diesem Fall nicht notwendig. Weitere Anregungen gibt es hier: man rsyncd.conf. 😉