Kopiere Daten auf ein Docker-Volume auf einem Zielsystem
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. 😉