rsync SSH Sync script
rsync SSH Sync script
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
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
- heisenberg
- Beiträge: 4146
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: rsync SSH Sync script
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.
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.
Re: rsync SSH Sync script
Danke ich werde das gleich ausprobieren!!
Re: rsync SSH Sync script
Hab mir mal lsyncd angeschaut. Kannst du mir helfen die Configs zu machen etc.?
- heisenberg
- Beiträge: 4146
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: rsync SSH Sync script
Kann ich tun. Hast Du die Key-Authentifizierung schon eingerichtet und getestet? Wenn nicht, mach das mal zuerst.Hab mir mal lsyncd angeschaut. Kannst du mir helfen die Configs zu machen etc.?
Re: rsync SSH Sync script
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.
Re: rsync SSH Sync script
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.
Re: rsync SSH Sync script
heisenberg Ich habe beider App auf dem Tab nachgeschaut darin kann man eine Public key RSA einfügen bzw. aussuchen.
Re: rsync SSH Sync script
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.
- heisenberg
- Beiträge: 4146
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: rsync SSH Sync script
Die Konfigdatei /etc/lsyncd-tablet.conf sieht ungefähr so aus:
Das Script, das lsyncd in Schleife ausführt ungefähr so(Z. B. ein /etc/rc.local eintragen):
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
}
)
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 &
Re: rsync SSH Sync script
So ich habe jetzt die Config ein wenig geändert. So sieht sie jetzt aus:
Das einzigste Problem jetzt ist nur das ich nicht weis wie ich meine Identity File mit reinmachen kann
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
}
}
- heisenberg
- Beiträge: 4146
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: rsync SSH Sync script
Du könntest es vermutlich mit
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
...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.
Code: Alles auswählen
sync {
...
ssh {
...
IdentityFile = DeinIDFile
...
}
...
}
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
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.
Re: rsync SSH Sync script
Ich habe das in .ssh/config reingemacht:
und so sieht die Lsyncd config aus:
Aber er sagt mir das:
Code: Alles auswählen
Host tab
HostName 192.168.31.199
Port 20218
User marcel
IdentityFile /home/marcel/key
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
}
}
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.
- heisenberg
- Beiträge: 4146
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: rsync SSH Sync script
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.
Re: rsync SSH Sync script
Danke für deine Hilfe aber es hat sich erledigt ich habe BT Sync endeckt. Da klappt alles so wie man es will ![Smile :)](./images/smilies/icon_smile.gif)
![Smile :)](./images/smilies/icon_smile.gif)