rsync zwischen Linux Server und DS

Status
Für weitere Antworten geschlossen.

mxtde79

Benutzer
Mitglied seit
04. Apr 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
An Synology Forum:

Ich arbeite mit XUBUNTU, Ubuntu 16.04.4 LTS.

Synchronisation meiner Musiksammlung

Meine Benutzerdaten habe ich erfolgreich mit der DS213 (karfunkel) synchronisiert.
Alles, was unter:
Rich (BBCode):
thomas@<rechner>:/home/thomas/CloudStation
steht, wird synchron auf der DS216i unter
Rich (BBCode):
thomas@karfunkel:/homes/thomas/CloudStation/Drive
abgebildet.

Jetzt habe ich noch eine Musiksammlung, die steht in /vol2/Medien/Musik.
Um die Musik in meinem Netz hören zu können, habe ich auf meinem Rechner
den miniDLNA Server installiert. Das funktioniert auch, aber DLNA soll
in Zukunft nicht auf meinem Rechner sondern auf der DS216i laufen.
Dabei möchte ich /vol2/Medien/Musik nicht aufgeben.
Vielmehr soll dies der Ort sein, wo ich meine Musikdateien warte.
Folgendes habe ich probiert:

1. den Mechanismus, der meine Daten in der HOME synchronisiert.
Der ist anscheinend auf /home/<benutzer> festgelegt

2. Unison funktioniert nicht rechnerübergreifend

3. rsync: habe ich auch nicht zum Laufen bekommen:
Folgende Anweisungen funktionieren:

Rich (BBCode):
sudo rsync -n --numeric-ids -ave ssh /home/thomas/syncTest/ /vol2/Medien/syncTest   # funktioniert
scp -r /vol2/Medien/Musik/Z-Musik/* thomas@karfunkel:/var/services/music/Musik/Z-Musik
rcp -r /vol2/Medien/Musik/Z-Musik/* thomas@karfunkel:/var/services/music/Musik/Z-Musik

Folgende Anweisung funktioniert nicht:
Rich (BBCode):
cd /
#                                    /vol2/Medien/Musik/Z-Musik/* thomas@karfunkel:/var/services/music/Musik/Z-Musik
sudo rsync -n --numeric-ids -ave ssh /vol2/Medien/Musik/Z-Musik/  thomas@karfunkel:/var/services/music/Musik/Z-Musik
thomas@karfunkel's password: 
sending incremental file list
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(1131) [Receiver=3.0.9]
rsync: connection unexpectedly closed (112 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

Welche Möglichkeiten bietet hier die DS?
 

dany

Benutzer
Mitglied seit
31. Mrz 2008
Beiträge
352
Punkte für Reaktionen
0
Punkte
22
Hallo mxtede79

Den Fehler kommt mir bekannt vor. Den hatte ich wenn ich mich richtig erinnere nach einem Major DSM Update auch.


  • Hast du auf beiden Seiten rsync am laufen?
  • Hast du den rsync User hinterlegt?

Ich habe ein Master-Job der folgendes Sub-Script aufruft (gekürzt):

PHP:
#!/bin/sh
SOURCEFOLDER=$1

RSYNC=/usr/bin/rsync    
OPTIONS=-avze

# -a, --archive               archive mode
# -v, --verbose               increase verbosity
# -z, --compress              compress file data
# -e, --rsh=COMMAND           specify rsh replacement

SSHPORT=22
SSHRSYNCKEY=/path/to/ssh.key
BACKUPDIR=/volume1/$SOURCEFOLDER/         
USER=bkpuser   
TARGET="/volume1/bkp/$SOURCEFOLDER/"             # Verzeichnis, wohin das Backup kopiert wird

$RSYNC $OPTIONS "ssh -p $SSHPORT -i $SSHRSYNCKEY" --stats --no-perms --no-owner --no-group --exclude="@eaDir" $BACKUPDIR $USER@$REMOTE:$TARGET

Anmerkung:
  • Damit der Sync ohne Passwort funktioniert habe ich den Account mit einem SSH-Key hinterlegt.
  • $1 ist ein Aurufparamter

Gruss Dany
 

mxtde79

Benutzer
Mitglied seit
04. Apr 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Hallo Dany,
vielen Dank für Deine prompte Antwort.
Ich musste mich erst etwas sortieren.
Ich habe auf beiden Rechnern jeweils einen neuen Benutzer angelegt: rsyncbenutzer
Mit dem habe ich mich jeweils auf dem anderen Rechner über ssh angemeldet,
sodass die ssh-Keys generiert wurden.
Dann habe ich mit rcp und scp experimentiert:
#! /bin/bash
#
# Optionen:
# -a Steht für „archive“ und ist einer der am häufigsten verwendeten Optionen.
# Die Option -a beinhaltet folgende Optionen -rlptgoD und kopiert somit Unterverzeichnisse,
# Symbolische Links und Rechte von Usern, Gruppen und Andere sowie die Zeitstempel der Dateien und Ordner von der Quelle.
# Kurz gesagt „-a“ macht eine 1zu1 Kopie von Quelle zum Ziel und ist grade für backups ideal geeignet.
# -e --rsh=COMMAND specify rsh replacement
# -p preserve permissions
# -l kopiert log. Links
# -r rekursiv
# -z zippen - sorgt gelegentlich für Probleme, also erst einmal weglassen
# -P Fortschrittsbalken
# -v verbose
# --delete Löscht Daten, die sich nicht (mehr) in der Quelle befinden. wird oft bei Backupscripten verwendet oder wenn Ordner 1zu1 immer auf den gleichen Stand sein sollen.
# -u Steht für “update” und überspringt Daten die im Ziel neuer als in der Quelle sind
# -n (–dry-run) Simuliert also nur was rsync machen würde, ohne echte Daten zu Kopieren oder zu überschreiben.
# --progress Zeigt die Zeit in Prozent und Geschwindigkeit beim übertragen von Daten an.


SOURCEFOLDER=Z-Musik
RSYNC=/usr/bin/rsync
OPTIONS=-avze
SSHPORT=22
SSHRSYNCKEY=/path/to/ssh.key
SOURCE_MUSIC=/vol2/Medien/Musik/
USER=admin
TARGET_MUSIC="/var/services/music/Musik/"

echo "SOURCEFOLDER $SOURCEFOLDER"
echo "SOURCE_MUSIC $SOURCE_MUSIC"
echo "TARGET_MUSIC $TARGET_MUSIC"

echo "RSYNC $RSYNC"
echo "OPTIONS $OPTIONS"
echo "SSHPORT $SSHPORT"
echo "SSHRSYNCKEY $SSHRSYNCKEY"

echo "USER $USER"


echo "execute rcp"
# rcp -r $SOURCE_MUSIC/$SOURCEFOLDER admin@karfunkel:/$TARGET_MUSIC/$SOURCEFOLDER

echo "execute scp"
# scp -r $SOURCE_MUSIC/$SOURCEFOLDER admin@karfunkel:/$TARGET_MUSIC/$SOURCEFOLDER

echo "execute rsync"
$RSYNC $OPTIONS "ssh -p $SSHPORT" --stats --no-perms --no-owner --no-group $SOURCE_MUSIC/$SOURCEFOLDER admin@$karfunkel:$TARGET_MUSIC/$SOURCEFOLDER

# $RSYNC $OPTIONS "ssh -p $SSHPORT -i $SSHRSYNCKEY" --stats --no-perms --no-owner --no-group --exclude="@eaDir" $BACKUPDIR $USER@$REMOTE:$TARGET
# $RSYNC $OPTIONS "ssh -p $SSHPORT -i $SSHRSYNCKEY" --stats --no-perms --no-owner --no-group --exclude="@eaDir" $SOURCE_MUSIC $USER@$REMOTE:$TARGET_MUSIC
exit
Ergebnis des Aufrufes des Skriptes:
thomas@opal:~/CloudStation/bin$ rsyncDLNAdata_OPAL_2_KARFUNKEL
SOURCEFOLDER Z-Musik
SOURCE_MUSIC /vol2/Medien/Musik/
TARGET_MUSIC /var/services/music/Musik/
RSYNC /usr/bin/rsync
OPTIONS -avze
SSHPORT 22
SSHRSYNCKEY /path/to/ssh.key
USER admin
execute rcp
execute scp
execute rsync
ssh: Could not resolve hostname : Name or service not known
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
thomas@opal:~/CloudStation/bin$
Zwei Dinge habe ich noch nicht richtig verstanden:
- wo steht ssh.key
- was bedeutet @eaDir

Grüße
Thomas
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.237
Punkte für Reaktionen
581
Punkte
174
Zwei Dinge habe ich noch nicht richtig verstanden:
- wo steht ssh.key
- was bedeutet @eaDir

a.) Den ssh.key musst du dir zunächst einmal generieren.
Üblicherweise werden sie unter "~/.ssh" abgelegt.

b.) Die @eaDir sind system interne Verzeichnisse von Synology die für verschiedene Dienste verwendet werden.
Diese hat dany in seinem script für den rsync Befehl ausgeschlossen mit --exclude="@eaDir" Somit werden diese Verzeichnisse nicht kopiert.

Gruß
Luddi
 

mxtde79

Benutzer
Mitglied seit
04. Apr 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Die keys habe ich generiert:

thomas@opal:~/CloudStation/bin$ ssh admin@karfunkel
admin@karfunkel's password:
admin@Synology-NAS:~$ ssh thomas@opal
thomas@opal's password:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

0 Software-Pakete können aktualisiert werden.
0 Aktualisierungen sind Sicherheitsaktualisierungen.

Last login: Fri Nov 16 16:53:22 2018
thomas@opal:~$
thomas@opal:~$ ls -al ~/.ssh
insgesamt 12
drwx------ 2 thomas thomas 4096 Jan 16 2017 .
drwxr-xr-x 54 thomas thomas 4096 Mär 6 10:17 ..
-rw-r--r-- 1 thomas thomas 2442 Mär 3 2018 known_hosts
thomas@opal:~$
Jetzt lasse ich noch einmal das Skript laufen:
thomas@opal:~$ rsyncDLNAdata_OPAL_2_KARFUNKEL
SOURCEFOLDER Z-Musik
SOURCE_MUSIC /vol2/Medien/Musik/
TARGET_MUSIC /var/services/music/Musik/
RSYNC /usr/bin/rsync
OPTIONS -avze
SSHPORT 22
SSHRSYNCKEY /home/thomas/.ssh
USER admin
execute rcp
execute scp
execute rsync
ssh: Could not resolve hostname : Name or service not known
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
thomas@opal:~$
Eine mir unerklärliche Fehlermeldung, denn:
thomas@opal:~$ which rsync
/usr/bin/rsync
thomas@opal:~$ ssh admin@karfunkel
admin@karfunkel's password:
admin@Synology-NAS:~$ which rsync
/bin/rsync
admin@Synology-NAS:~$ ls -al ~/.ssh
total 16
drwxrwxrwx+ 2 admin users 4096 Feb 5 2018 .
drwxrwxrwx+ 4 admin users 4096 Feb 5 2018 ..
-rwxrwxrwx+ 1 admin users 181 Feb 5 2018 known_hosts
admin@Synology-NAS:~$
Also: karfunkel ist bekannt und dort ist auch rsync installiert.
Die essentielle Zeile im Skript lautet:
echo "execute rsync"
$RSYNC $OPTIONS "ssh -p $SSHPORT -i $SSHRSYNCKEY" --stats --no-perms --no-owner --no-group $SOURCE_MUSIC/$SOURCEFOLDER admin@$karfunkel:$TARGET_MUSIC/$SOURCEFOLDER
Irgendetwas übersehe ich, aber was?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.237
Punkte für Reaktionen
581
Punkte
174
Hast du es schon einmal mit IP Adresse anstatt mit dem Hostname probiert?

Ansonsten hier einmal ein Script welches ich verwende um das gesamte Home Verzeichnis des RaspberryPi auf die DS zu synchronisieren.

Rich (BBCode):
#!/bin/bash


# Parameters ###################################################################

#Remote Server
RemoteHost="10.144.238.185"
RemoteTarget="~/backup/Pi0-Raspbian/"		#Directory inside user home of user "raspberry" on Diskstation
User="raspberry"				#User on Diskstation
RsaKey="~/.ssh/raspberry_at_SynologyDS_id_rsa"	#Path to rsa-key located on source system (Raspberry)
BackupDir="~/backup/Pi0-Raspbian-deleted/"	#Backup directory on target system for deleted files during synchronization when using optoin --delete for rsync

# set rsync parameters
RsyncParameters="avzhcP"

#check via ping if Host is available before start to rsync files
HOST=$RemoteHost
MAXPAKETS=2
CHECKTIME=1
HOST_AVAIL=0

# Functions ####################################################################

# check via ping if host is available
funcCheckHostAvailable()
{
  ping -c $MAXPAKETS $HOST > /dev/null
  if [ $? == 0 ]; then
    # Host 1st time available and wait defined time
    sleep $CHECKTIME
    # check again if host is available
    ping -c $MAXPAKETS $HOST > /dev/null
    if [ $? == 0 ]; then
      # Host 2nd time available and wait defined time
      sleep $CHECKTIME
      # set available parameter to allow
      HOST_AVAIL=1
    fi
  fi
}

# ToDo ########################################################################

funcCheckHostAvailable

if [ $HOST_AVAIL == 1 ]; then

  #if host is available then do your code here

  rsync -$RsyncParameters --delete -b --backup-dir=$BackupDir ~/ -e "ssh -i $RsaKey" $User@$RemoteHost:$RemoteTarget

fi #if [ $HOST_AVAIL == 1 ]

exit 0

Gruß
Luddi
 
Zuletzt bearbeitet:

dany

Benutzer
Mitglied seit
31. Mrz 2008
Beiträge
352
Punkte für Reaktionen
0
Punkte
22
Hallo mxtde79

Ok, da war ich etwas vorschnell. Dachte das dir die Benutzung von SSH klar ist.
Damit rsync ohne Passwort via ssh funktioniert muss natürlich ssh mit Private/Public-Key ohne Passswort eingerichtet werden.

Hast du:

  • Private Key ohne Passwort gespeichert?
  • Public Key im Verzeichnis des Users unter .ssh/authorized_keys abgelegt?
  • Hat authorized_keys die richtigen Benutzerrechte? => Müsste 644 haben
  • Ist der Eintrag AuthorizedKeysFile im sshd vorhanden? =>
    PHP:
    AuthorizedKeysFile      %h/.ssh/authorized_keys
  • Zum Prüfen:
    PHP:
    cat /etc/ssh/sshd_config | grep 'AuthorizedKeysFile'
  • Kannst du Schlussendlich ohne Passwort auf admin@karfunkel anmelden?

Siehe: https://stastka.ch/knowledge-base/custom/story/43b0d90f


rsync
  • Auf dem Zielsystem: Hast du den User 'admin' autorisierit? Control Panel>File Services>rsync [Edit rsync Account]
 

mxtde79

Benutzer
Mitglied seit
04. Apr 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Leider bin ich mit meinem Latein wieder am Ende.
# Vorbereitung:
# Wenn ich jetzt Daten zwischen thomas@opal und admin@karfunkel synchronisieren will,
# muss admin@karfunkel sich auch auf thomas@opal anmelden können, und umgekehrt,
# und zwar OHNE Passwort.
# Dazu generiert man auf opal private/public keys und gibt sie an karfunkel.
# Letzterer kann sich dann bei opal anmelden, OHNE auf der Kommandozeile
# das Passwort abzufragen.
0
# ssh-keygen -t rsa
# ssh-keygen -t dsa
# Auf opal:
# ll ~/.ssh # id_dsa, id_dsa.pub, id_rsa, id_rsa.pub: -rw-r--r--

# Jetzt die Schlüssel von opal nach karfunkel kopieren
# thomas@opal:~/.ssh$ ssh-copy-id -i ~/.ssh/id_rsa.pub admin@karfunkel
# thomas@opal:~/.ssh$ ssh-copy-id -i ~/.ssh/id_dsa.pub admin@karfunkel
# auf karfunkel:
# ll ~/.ssh # -rwxrwxrwx+ 1 admin users 994 Mar 8 16:36 authorized_keys
#
# sudo service ssh restart

Leider:
thomas@opal:~/.ssh$ ssh admin@karfunkel
admin@karfunkel's password:
#
admin@Synology-NAS:~/.ssh$ ssh thomas@opal
thomas@opal's password:

admin auf karfunkel ist eingetragen:
Systemsteuerung - Dateidienste - rsync - sync-Konten aktivieren - rsync-Konten bearbeiten:
hier geht ein Fenster auf, in dem Benutzer stehen, u.A. der admin.
Ihm ist ein Passwort zugeordnet, mit welchem ich mich normalerweise als admin anmelde.

Gruß
Thomas
 

mxtde79

Benutzer
Mitglied seit
04. Apr 2018
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
vielleicht hilft diese Fehlermeldung weiter:
thomas@opal:~/.ssh$ rsyncDLNAdata_OPAL_2_KARFUNKEL
SOURCEFOLDER Z-Musik
SOURCE_MUSIC /vol2/Medien/Musik/
TARGET_MUSIC /var/services/music/Musik/
REMOTE_TARGET karfunkel
REMOTE_USER admin
RSYNC /usr/bin/rsync
OPTIONS -avze
SSHPORT 22
SSHRSYNCKEY /home/thomas/.ssh/known_hosts
execute rcp
execute scp
/home/thomas/CloudStation/bin/rsyncDLNAdata_OPAL_2_KARFUNKEL: Zeile 69: 0: Befehl nicht gefunden
execute rsync
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/thomas/.ssh/known_hosts' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/home/thomas/.ssh/known_hosts": bad permissions
admin@karfunkel's password:
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
chmod 0700 /home/thomas/.ssh
chmod 0600 /home/thomas/.ssh/*
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat