home-harmening:sicherheit:backup:rsync:grafischer_rsync_client

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
home-harmening:sicherheit:backup:rsync:grafischer_rsync_client [2024/10/29 11:50] charmeninghome-harmening:sicherheit:backup:rsync:grafischer_rsync_client [2024/11/12 14:08] (aktuell) charmening
Zeile 4: Zeile 4:
 Wenn das Skript aus einer GUI gestartet wurde wird mit yad ein Fortschrittsbalken erzeugt. \\ Wenn das Skript aus einer GUI gestartet wurde wird mit yad ein Fortschrittsbalken erzeugt. \\
 Falls ohne GUI gestartet wird kommt eine Prozent Angabe auf der Konsole. Falls ohne GUI gestartet wird kommt eine Prozent Angabe auf der Konsole.
-\\ \\ \\ \\+Das Skript besitzt eine Konfigurationsdatei **sync.conf** in der einige Variablen konfiguriert werden können. Alternativ kann jede Variabe\\ 
 +mittels Schalter übergeben werden. 
 +|**Option**|| 
 +|-s|Angabe des Servers| 
 +|-q|Wo liegt der Client auf dem Server| 
 +|-d|Wo sollen die Dateien lokal gespeichert werden| 
 +|-i|Wo ist der SSH Schlüssel| 
 +|-x|Welche Datei soll am Ende ausgeführt werden| 
 +\\ 
 +==== Ordnerstruktur ===== 
 +<code> 
 +/opt/sync_client/ 
 +                 sync_client.sh 
 +                 sync.conf 
 +</code> 
 +\\ \\ 
 +==== sync.conf ==== 
 +<code Bash> 
 +#!/bin/bash 
 + 
 +str_server=SERVER                                       # Server Adresse 
 +str_source=/share/client/                               # Ordner auf dem Server 
 +str_dest=/opt/client/client/                            # Ordner auf dem lokalen System 
 +str_user=rsyncuser                                      # Benutzer auf dem Server 
 +str_key=/opt/client/id_ecdsa_rsyncuser                  # SSH Key File 
 +str_icon=/usr/share/icons/client.png                    # Icon für die yad Anzeige 
 +str_title="Sync Client"                                 # Titel des Clients 
 +str_infoTxt="Prüfe Version ..."                         # Info Text des Clients 
 +str_start=/opt/client/client/client                     # Datei welche nach dem beenden gestartet werden soll 
 +</code> 
 +\\ 
 +==== sync-client.sh ====
 <code Bash> <code Bash>
 #!/bin/bash #!/bin/bash
Zeile 11: Zeile 42:
  
 # Variablen # Variablen
-str_server=SERVER         # Server Adresse +str_sourceBin=$(dirname "$(readlink -f "$0")") 
-str_source=/var/www/client/client/*         # Ordner auf dem Server +if [ -f ${str_sourceBin}/sync.conf ]; then source ${str_sourceBin}/sync.conf; fi
-str_dest=/home/USER/client/         # Ordner auf dem lokalen System +
-str_user=rsyncuser # Benutzer auf dem Server +
-str_key=/home/USER/.ssh/id_rsyncuser_ecdsa         # SSH Key File +
-str_icon=/usr/share/icons/client/client.ico         # Icon für die yad Anzeige +
-str_title="Client"         # Titel des Clients +
-str_infoTxt="Prüfe Version ..." # Info Text des Clients +
-str_start=start.sh         # Datei welche nach dem beenden gestartet werden soll+
  
 # Feste Variablen # Feste Variablen
Zeile 26: Zeile 50:
 YELLOW='\033[1;33m' YELLOW='\033[1;33m'
 NC='\033[0m' NC='\033[0m'
 + 
 show_help() { show_help() {
   echo   echo
Zeile 83: Zeile 107:
  
 # Wieviele Dateien müssen übertragen und gelöscht werden? # Wieviele Dateien müssen übertragen und gelöscht werden?
-int_numberOfFiles=$(rsync -auv --delete --dry-run --stats -e "ssh -i ${str_key}" ${str_user}@${str_server}:${str_source} ${str_dest} | grep "Number of regular files transferred" | awk '{print $6}'+int_numberOfFiles=$(rsync -auv --delete --dry-run --stats -e "ssh -o StrictHostKeyChecking=no -i ${str_key}" ${str_user}@${str_server}:${str_source} ${str_dest} | grep "Number of regular files transferred" | awk '{print $6}'
-int_numberOfFilesDelete=$(rsync -auv --delete --dry-run --stats -e "ssh -i ${str_key}" ${str_user}@${str_server}:${str_source} ${str_dest} | grep "Number of deleted files" | awk '{print $5}')+int_numberOfFilesDelete=$(rsync -auv --delete --dry-run --stats -e "ssh -o StrictHostKeyChecking=no -i ${str_key}" ${str_user}@${str_server}:${str_source} ${str_dest} | grep "Number of deleted files" | awk '{print $5}')
  
-# Prüfe over der Zielordner existiert+# Prüfe ob der Zielordner existiert
 if [ ! -d ${str_dest} ]; then mkdir -p ${str_dest}; fi if [ ! -d ${str_dest} ]; then mkdir -p ${str_dest}; fi
  
 sync_files() { sync_files() {
     # Übertrage Dateien     # Übertrage Dateien
-    rsync -auvh --delete --info=name -e "ssh -i ${str_key}" ${str_user}@${str_server}:${str_source} ${str_dest} | while read -r line ; do+    rsync -auvh --chown=root:root --chmod=u+rwx,g+rwx,o+rwx --delete --info=name -e "ssh -o StrictHostKeyChecking=no -i ${str_key}" ${str_user}@${str_server}:${str_source} ${str_dest} | while read -r line ; do
         ((count++))         ((count++))
         #echo "Datei ${count} von ${int_numberOfFiles}: $line"         #echo "Datei ${count} von ${int_numberOfFiles}: $line"
Zeile 99: Zeile 123:
  int_progress=$(( (count * 100) / ${int_numberOfFiles} ))  int_progress=$(( (count * 100) / ${int_numberOfFiles} ))
         # Lass über 100 dan bleibe bei 100         # Lass über 100 dan bleibe bei 100
-        if (( ${int_progress} >= 100 )) then int_progress=100; fi+        if (( ${int_progress} >= 100 ))then int_progress=100; fi
         if [ -z $DISPLAY ]; then         if [ -z $DISPLAY ]; then
           printf "\r${GREEN}${int_progress}${NC} percent"           printf "\r${GREEN}${int_progress}${NC} percent"
Zeile 108: Zeile 132:
 } }
  
-# Wenn keine Dateien übertragen oder gelöscht werden müssen, dann starte direkt GeoMIA+# Wenn keine Dateien übertragen oder gelöscht werden müssen, dann starte direkt den Client
 if (( ${int_numberOfFiles} > 0 )) || (( ${int_numberOfFilesDelete} > 0 )) ; then if (( ${int_numberOfFiles} > 0 )) || (( ${int_numberOfFilesDelete} > 0 )) ; then
   count=0   count=0
Zeile 118: Zeile 142:
 fi fi
  
-GeoMIA Start +Client Start 
-if [ ! -z ${str_start} ]; then +if [ ! -z $DISPLAY ]; then 
-  echo "Starte ${str_start}..." +  if [ ! -z ${str_start} ]; then 
-  ${str_start}+    echo "Starte ${str_start}..." 
 +    ${str_start} 
 +  fi
 fi fi
 </code> </code>
 \\ \\
 Den passenden Rsync Server findet man [[home-harmening:sicherheit:backup:rsync:syncen_von_verzeichnissen|hier]] Den passenden Rsync Server findet man [[home-harmening:sicherheit:backup:rsync:syncen_von_verzeichnissen|hier]]