All apps · 0 apps
rsync-server
Docker app from mgutt's Repository
Overview
Readme
View on GitHubSimple rsync container based on alpine
A simple rsync server/client Docker image to easily rsync data within Docker volumes
Simple Usage
Get files from remote server within a docker volume:
$ docker run --rm -v blobstorage:/data/ eeacms/rsync \
rsync -avzx --numeric-ids user@remote.server.domain.or.ip:/var/local/blobs/ /data/
Get files from remote server to a data container:
$ docker run -d --name data -v /data busybox
$ docker run --rm --volumes-from=data eeacms/rsync \
rsync -avz user@remote.server.domain.or.ip:/var/local/blobs/ /data/
Advanced Usage
Client setup
Start client to pack and sync every night:
$ docker run --name=rsync_client -v client_vol_to_sync:/data \
-e CRON_TASK_1="0 1 * * * /data/pack-db.sh" \
-e CRON_TASK_2="0 3 * * * rsync -e 'ssh -p 2222' -aqx --numeric-ids root@foo.bar.com:/data/ /data/" \
eeacms/rsync client
Copy the client SSH public key printed found in console
SSH key persistence - client
To use the same generated keys on docker container re-creation, you need to persist the key directory ( /root/.ssh ) in a Docker volume. On first start the keys will be created, and then, on all subsequent starts they will be re-used.
For example, you can use a volume called ssh-key like this:
$ docker run --name=rsync_client -v ssh-key:/root/.ssh -v client_vol_to_sync:/data
eeacms/rsync client
SSH key persistence - server
To use the same generated host keys on docker container re-creation, you need to persist the host key directory ( /ssh_host_keys ) in a Docker volume. On first start the keys will be created, and then, on all subsequent starts they will be re-used.
$ docker run --name=rsync_server -v ssh-host-keys:/ssh_host_keys -v server_vol_to_sync:/data
eeacms/rsync server
If you want the rsync client to skip checking the ssh host keys, you can always add this 2 parameters to your client ssh configuration -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
Server setup
Start server on foo.bar.com
# docker run --name=rsync_server -d -p 2222:22 -v ssh-host-keys:/ssh_host_keys -v server_vol_to_sync:/data \
-e SSH_AUTH_KEY_1="<SSH KEY FROM rsync_client>" \
-e SSH_AUTH_KEY_n="<SSH KEY FROM rsync_client_n>" \
eeacms/rsync server
Verify that it works
Add test file on server:
$ docker exec -it rsync_server sh
$ touch /data/test
Bring the file on client:
$ docker exec -it rsync_client sh
$ rsync -e 'ssh -p 2222' -avz root@foo.bar.com:/data/ /data/
$ ls -l /data/
Rsync data between containers in Rancher
Request TCP access to port 2222 to an accessible server of environment of the new installation from the source container host server.
Start rsync client on host from where do you want to migrate data (ex. production).
Infrastructures -> Hosts -> Add Container
- Select image: eeacms/rsync
- Command: sh
- Volumes -> Volumes from: Select source container
Open logs from container, copy the ssh key from the message
Start rsync server on host from where do you want to migrate data (ex. devel). The destination container should be temporarily moved to an accessible server ( if it's not on one ) .
Infrastructures -> Hosts -> Add Container
- Select image: eeacms/rsync
- Port map -> +(add) : 2222:22
- Command: server
- Add environment variable: SSH_AUTH_KEY=""
- Volumes -> Volumes from: Select destination container
Within rsync client container from step 1 run:
$ rsync -e 'ssh -p 2222' -avz <SOURCE_DUMP_LOCATION> root@<TARGET_HOST_IP_ON_DEVEL>:<DESTINATION_LOCATION>
- The rsync servers can be deleted, and the destination container can be moved back ( if needed )
Install rsync-server on Unraid in a few clicks.
Find rsync-server in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allLinks
Details
eeacms/rsyncRuntime arguments
- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--memory=1G
Template configuration
Container Path: /mnt/user/
- Target
- /mnt/user/
- Value
- /mnt/user/
Container Port: 22
- Target
- 22
- Value
- 5533
Container Variable: SSH_AUTH_KEY_1
- Value
- enter_ssh_key_of_client
Container Variable: SSH_AUTH_KEY_2