rsync SSH Sync script

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

rsync SSH Sync script

Beitrag von DieKrabbe » 06.10.2015 19:27:12

Hallo Community,

ich habe vor ein Synchronisierungsscript zu machen. Ich hatte mir das ganze mit rsync vorgestellt nur habe ich probleme damit. Es soll einen Ordner auf meiner 2. Festplatte mit einem Ordner auf meinem Tablet syncen. Es handelt sich hierbei um ein Musik Ordner. Das Tablet hat einen funktionierenden SSH Server auf dem Port 20218 und die IP: 192.168.31.199.

rsync -r --delete --numeric-ids -avze 'ssh -p 20218' /media/Datenplatte/Musik/ marcel@192.168.31.199:/sdcard/ Der Command soll datein vom PC auf das Tablet schicken

rsync -r --delete --numeric-ids -avze 'ssh -p 20218' marcel@192.168.31.199:/sdcard/ /media/Datenplatte/Musik/ Der Command soll datein vom Tab auf den PC schicken

Ich dachte man könnte das in ein SH script machen und in croon im sekunden modus abspielen lassen so dass er immer wen eine neue Datei auf dem PC oder Tab ist die sich automatisch syncronisiert und wen eine gelöscht wird die ebenfalls auch auf dem anderen gerät gelöscht wird.
Beim SSH Server hab ich kein PW reingemacht damit man es nicht immer eingeben muss.
Problem: Immer wen ich den ersten befehl ausführe kommt ein Fehler und ich muss trotzdem bei der PW abfrage enter drücken weil kein PW da ist eben keins eingeben.

rsync -r --delete --numeric-ids -avze 'ssh -p 20218' /media/Datenplatte/Musik/ marcel@192.168.31.199:/sdcard/
marcel@192.168.31.199's password:
exec request failed on channel 0
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]


So soll das SH script aussehen dachte ich mir:
--------------------------------------------------------------------------------------------------------------------
echo "Musik Syncscript!"

rsync -r --delete --numeric-ids -avze 'ssh -p 20218' /media/Datenplatte/Musik/ $

echo "Fertig"

rsync -r --delete --numeric-ids -avze 'ssh -p 20218' marcel@192.168.31.199:/sdc$

echo "Fertig"
-------------------------------------------------------------------------------------------------------------------------

Die befehle sind vom Nano editor abgekürtzt worden.

Wen jemand Teamspeak hat oder eine andere art zum sprechen würde ich diese mitmachen.

Bitte hilft mir!

Mit freundlichen Grüßen
Marcel

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync SSH Sync script

Beitrag von heisenberg » 06.10.2015 20:41:32

Hi,

Damit der SSH-Login ohne Passwort funktioniert, musst Du auf Deinem Tablet den Public-Key Deines Desktop-PC-Users hinterlegen. Siehe hier:

https://wiki.ubuntuusers.de/SSH#Authent ... ublic-Keys

Evtl. muss der Key auch noch konvertiert werden, weil auf dem Tablet nicht OpenSSH, sondern ein anderer SSH-Server läuft.

Für die Synchronisation empfehle ich Dir lsyncd. Das macht genau das, was Du willst: Es synchronisiert die Änderungen automatisch nach. Den kannst Du in Schleife laufen lassen, dann synchronisiert er das tablet, sobald es erreichbar ist. lsyncd basiert auf rsync und ist echt super,

Siehe hier:

https://code.google.com/p/lsyncd/

Ab Debian 8 / Jessie auch als Debian-Paket verfügbar.

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 07.10.2015 19:35:19

Danke ich werde das gleich ausprobieren!!

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 08.10.2015 00:01:18

Hab mir mal lsyncd angeschaut. Kannst du mir helfen die Configs zu machen etc.?

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync SSH Sync script

Beitrag von heisenberg » 08.10.2015 02:18:33

Hab mir mal lsyncd angeschaut. Kannst du mir helfen die Configs zu machen etc.?
Kann ich tun. Hast Du die Key-Authentifizierung schon eingerichtet und getestet? Wenn nicht, mach das mal zuerst.

uname
Beiträge: 12497
Registriert: 03.06.2008 09:33:02

Re: rsync SSH Sync script

Beitrag von uname » 08.10.2015 08:25:51

Auch wenn es deine Frage nicht betrifft. Der Parameter "-r" ist bereits in "-a" enthalten und wird somit nicht benötigt. Auch nutze ich zusätzlich die Option "-R". Leider weiß ich gar nicht mehr, warum bei mir "relative Pfade" wichtig waren. Kannst das ja noch eben überprüfen.

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 08.10.2015 17:00:55

Bei -a werden auch die Rechte übernommen die Ärger auf dem Androiden verursachen könnten deshalb benutze ich -r und -r kann man groß oder klein schreiben und es ist dafür da das der Inhalt des Ordners auch übernommen wird.

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 08.10.2015 17:02:13

heisenberg Ich habe beider App auf dem Tab nachgeschaut darin kann man eine Public key RSA einfügen bzw. aussuchen.

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 08.10.2015 17:16:41

Ich hab das mit der Public Identifizierung und ohne PW hingekriegt! Es liegt nur noch an Rsync oder lsyncd. Da musst du mir helfen heisenberg.

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync SSH Sync script

Beitrag von heisenberg » 08.10.2015 22:45:02

Die Konfigdatei /etc/lsyncd-tablet.conf sieht ungefähr so aus:

Code: Alles auswählen

----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
sync{default.rsyncssh,
        source="/DEIN/QUELL/VERZEICHNIS",
        host="TABLET-IP-ADRESSE",
        targetdir="/VERZEICHNIS/AUF/TABLET/"},
        rsync={
                archive         = true,
                numeric-ids     = true,
                compress        = true
         },
        ssh = {
                user            = marcel,
                port            = 20218
        }
        )
Das Script, das lsyncd in Schleife ausführt ungefähr so(Z. B. ein /etc/rc.local eintragen):

Code: Alles auswählen

nohup bash -c " {
while :; do
     lsyncd -nodaemon /etc/lsyncd-tablet.conf
     echo "Waiting 60 seconds to start again..."
     sleep 60
done
}"  >/tmp/lsyncd.log 2>&1 &

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 10.10.2015 11:53:29

So ich habe jetzt die Config ein wenig geändert. So sieht sie jetzt aus:

Code: Alles auswählen

settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd-status.log",
    statusInterval = 20,
    nodaemon = true
}

sync {
   default.rsyncssh,
   source="/media/Datenplatte/Musik",
   host="192.168.31.199",
   targetdir="/sdcard/",
   delete = true,
   rsync = {
     archive = true,
     compress = false,
   },
   ssh = {
     port = 20218,
     user = marcel
   }
}
Das einzigste Problem jetzt ist nur das ich nicht weis wie ich meine Identity File mit reinmachen kann

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync SSH Sync script

Beitrag von heisenberg » 10.10.2015 14:31:41

Du könntest es vermutlich mit

Code: Alles auswählen

sync { 
      ...
      ssh {
      ...
           IdentityFile = DeinIDFile
      ...
     }
     ...
}
So wie ich das verstanden habe, kann man in der lsyncd-Config-Datei unter sync/ssh alle Optionen angeben die in der ManPage von ssh_config möglich sind.

Du musst das IdentityFile auch nicht unbedingt in die lsyncd-config eintragen.
Das kannst auch in der SSH-Config einen Host-Alias definieren.
/home/deinuser/.ssh/config

Code: Alles auswählen

Host tablet
      Hostname 192.168.31.199
      Port 20018
      User marcel
      IdentityFile blablub
...und demzufolge in der lsyncd-Config die IP-Adresse durch "tablet" ersetzen.

Ich habe auch keine Ahnung, ob lsyncd im Daemon Mode vielleicht selbst immer wieder versucht Verbindung aufzunehmen, falls keine besteht. Falls ja, kann man sich den zusätzlichen Scriptschnipsel sparen.

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 10.10.2015 18:53:04

Ich habe das in .ssh/config reingemacht:

Code: Alles auswählen

Host tab
    HostName 192.168.31.199
    Port 20218
    User marcel
    IdentityFile /home/marcel/key
und so sieht die Lsyncd config aus:

Code: Alles auswählen

settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd-status.log",
    statusInterval = 20,
    nodaemon = true
}

sync {
   default.rsyncssh,
   source="/media/Datenplatte/Musik",
   host="tab",
   targetdir="/sdcard/",
   delete = true,
   rsync = {
     archive = true,
     compress = true,
   },
   ssh = {
     port = 20218,
     user = marcel
   }
}
Aber er sagt mir das:

Code: Alles auswählen

18:52:47 Normal: recursive startup rsync: /media/Datenplatte/Musik/ -> tab:/sdcard/
ssh: Could not resolve hostname tab: No address associated with hostname
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.0]
18:52:47 Error: Temporary or permanent failure on startup of "/media/Datenplatte/Musik/". Terminating since "insist" is not set.

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync SSH Sync script

Beitrag von heisenberg » 10.10.2015 19:13:45

Ok. Sieht so aus, als wäre der Mechanismus einen Alias aus .ssh/config zu verwenden nicht möglich. Dann musst Du doch die andere Variante verwenden und das IdentityFile direkt eintragen.

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: rsync SSH Sync script

Beitrag von DieKrabbe » 10.10.2015 20:04:20

Danke für deine Hilfe aber es hat sich erledigt ich habe BT Sync endeckt. Da klappt alles so wie man es will :)

Antworten