PhpZfsSyncer

1. Repository auf den "main"-Server herunterladen

Ist der Server, der die Daten zur Verfügung stellt

mkdir -p ~/projects && cd ~/projects
git clone git@bitbucket.org:locr/phpzfssyncer.git PhpZfsSyncer
cd PhpZfsSyncer

2. root SSH-Keys auf dem "main" und "replica"-Server einrichten

2.1. php-xml installieren

sudo apt install php-xml

2.2. Erstellen des Keys für den root-user

sudo ssh-keygen -t ed25519
# Datei nicht überschreiben, wenn schon vorhanden!

2.3. Gegenseitig bekanntmachen

  • Inhalt der Datei ("main"-Server): /root/.ssh/id_ed25519.pub an die Datei ("replica"-Server): /root/.ssh/authorized_keys anhängen.

  • Inhalt der Datei ("main"-Server): /serverconnect/.ssh/id_ed25519.pub an die Datei ("replica"-Server): /root/.ssh/authorized_keys anhängen.

  • einmalig Verbindung herstellen ("main" → "replica"): sudo ssh root@<replica-subdomain>.locr.com

  • Inhalt der Datei ("replica"-Server): /root/.ssh/id_ed25519.pub an die Datei ("main"-Server): /root/.ssh/authorized_keys anhängen.

  • einmalig Verbindung herstellen ("replica" → "main"): sudo ssh root@<main-subdomain>.locr.com

3. sudoers-Datei auf dem replica server anpassen (VIM-Editor)

sudo visudo -f /etc/sudoers.d/zfs
  • Folgende Zeile hinzufügen:

serverconnect   ALL=(ALL) NOPASSWD: /usr/sbin/zfs

4. Konfigurationsdatei einrichten

cp settings.sample.xml ~/zfs-syncer-settings.xml
  • ~/zfs-syncer-settings.xml Datei anpassen

5. Zfs-Sync auf dem main starten

cd ~/projects/PhpZfsSyncer

# Zum auflisten aller Verfügbaren jobs:
sudo ./zfs_syncer.php --settings-file="/home/serverconnect/zfs-syncer-settings.xml" --list-jobs

# Achtung: Bei jobs, wo die Daten in einer Datenbank (MySQL, PostgreSQL) liegen, muss vor dem Syncen der entsprechende Dienst (mysql, postgresql) gestoppt werden!

# Aufruf sollte mit screen Befehl erfolgen
screen -S copy

# Um nur einen Job (Bsp.: Valhalla) durchzuführen:
sudo ./zfs_syncer.php --settings-file="/home/serverconnect//zfs-syncer-settings.xml" --only-job=Valhalla
# Wenn Kopieren nicht startet, Befehl zweites Mal ausführen!