rsync
https://wiki.ubuntuusers.de/rsync/
Einfaches Backup
rsync -av /srv/app-data /srv/app-data-backup-$(date "+%d-%m-%G")
Sync zu entfernten Rechner (-z Komprimierung; bei langsamen Verbindungen sinnvoll)
rsync --numeric-ids -avz --progress QUELL-ORDNER BENUTZER@ZIEL-PC:/Pfad/
löschen alter Dateien im Ziel-Ordner
rsync --numeric-ids -avz --progress --delete QUELL-ORDNER BENUTZER@ZIEL-PC:/Pfad/
mit SSH-Key
rsync --numeric-ids -avz --progress -e "ssh -i /home/benutzer/.ssh/id_rsa" QUELL-ORDNER BENUTZER@ZIEL-PC:/Pfad/
Dateien von entfernten Host holen
-z für komprimieren -e für ssh-key
rsync --numeric-ids -avz --progress --delete "ssh -i /home/benutzer/.ssh/id_rsa" root@backup.network:/srv/backup/rsync-gitlab /tmp/
mit SSH-KEY und SSH-Passwort
Es gibt keine Möglichkeit(?) einen SSH-Benutzer mit Key UND Passwort per rsync zu verwenden.
Folgender Befehl hilft nur temporär. Mit sshpass auch kein Erfolg gehabt. Ansonsten nur als rsync Daemon.
eval `ssh-agent` && ssh-add /home/benutzer/.ssh/dupli_id_rsa
Beispiel:
vim /srv/cron/gitlab_data_sync.sh
#!/bin/sh
## ssh-Passwort einmalig wie folgt auf QuellHost hinzufügen
## Passwort im keepass
## Kommando:
# eval `ssh-agent` && ssh-add /root/.ssh/dupli_id_rsa
## Daten des Quellsystem
REMOTE_HOST=10.95.178.69
REMOTE_USER=dupli
REMOTE_USER_KEY=/home/benutzer/.ssh/id_rsa
GITLAB_DATA_DIR_LOCAL=/srv/gitlab-data
GITLAB_DATA_DIR_REMOTE=/srv/backup/rsync-gitlab-data
#Sync Optionen
#bwlimit begrenzt Bandbreite
RSYNC_OPTS="-avh --delete --numeric-ids --bwlimit=10000"
SSH_CMD="/usr/bin/ssh -i $REMOTE_USER_KEY -l $REMOTE_USER"
/usr/bin/rsync $RSYNC_OPTS -e "$SSH_CMD" $GITLAB_DATA_DIR_LOCAL/ $REMOTE_USER:$REMOTE_USER_PW@$REMOTE_HOST:$GITLAB_DATA_DIR_REMOTE/
Skript ausführbar machen
chmod a+x gitlab_data_sync.sh
Crontab für regelmäßige Ausführung bearbeiten:
crontab -e
0 5 * * * /srv/gitlab/cron/gitlab_app_sync.sh >> /srv/gitlab/logs/gitlab_app_sync.log 2>&1