Basic Backup Basic Backup

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Das passiert auch mir oft genug. Wichtig wäre es jetzt nur zu identifizieren wie es richtig sein muss, um auch Leerzeichen abzufangen und entsprechend korrekt zu verarbeiten.
Ich selbst kann es auch nicht leiden, wenn Leerzeichen verwendet werden aber wir sind alle Individuen und jeder macht das was ihm persönlich am besten gefällt. Und wenn Leerzeichen erlaubt sind, werden diese auch von Personen verwendet :ROFLMAO:

Schau einfach mal in Ruhe drüber und ich bin mir sicher, dass du den Fehler im Script beheben wirst.
 

RR!!

Benutzer
Mitglied seit
10. Jun 2016
Beiträge
10
Punkte für Reaktionen
1
Punkte
3
Basic Backup GUI Version: 0.8-100
Basic Backup Job Configuration : 0.8-000
Basic Backup rsync script Version: 0.8-000
DiskStation Manager Version: 7.1.1-42962 Update 6
-------------------------------------------------------------------------------------------------------------------
2023-12-10 17:21:13 - Der Datensicherungsauftrag wird gestartet...
-------------------------------------------------------------------------------------------------------------------
Die Auftragskonfiguration wird eingelesen [ Test.config ]
Es wird ein Pull-Backup durchgefuehrt. Verbindung wird geprueft...
Der Remote Server ist online. Versuche eine Verbindung herzustellen.
Die SSH-Verbindung zum Remote Server wurde erfolgreich hergestellt.
OpenSSH_8.2p1, OpenSSL 1.1.1t 7 Feb 2023
debug2: resolve_canonicalize: hostname 192.168.178.86 is address
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug2: ssh_connect_direct
debug1: Connecting to 192.168.178.86 [192.168.178.86] port 22.
debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type 0
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.2
debug1: match: OpenSSH_8.2 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 192.168.178.86:22 as 'RR-admin'
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /root/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 192.168.178.86
debug3: order_hostkeyalgs: have matching best-preference key type ecdsa-sha2-nistp256-cert-v01@openssh.com, using HostkeyAlgorithms verbatim
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,ext-info-c
debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com,ssh-ed25519,sk-ssh-ed25519@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,zlib@openssh.com,zlib
debug2: compression stoc: none,zlib@openssh.com,zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
debug2: host key algorithms: rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256,ssh-ed25519
debug2: ciphers ctos: aes128-ctr,aes128-gcm@openssh.com,aes192-ctr,aes256-ctr,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
debug2: ciphers stoc: aes128-ctr,aes128-gcm@openssh.com,aes192-ctr,aes256-ctr,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
debug2: MACs ctos: hmac-sha1,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com,umac-128@openssh.com,umac-64-etm@openssh.com,umac-64@openssh.com
debug2: MACs stoc: hmac-sha1,hmac-sha1-etm@openssh.com,hmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com,umac-128@openssh.com,umac-64-etm@openssh.com,umac-64@openssh.com
debug2: compression ctos: none,zlib@openssh.com
debug2: compression stoc: none,zlib@openssh.com
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:+6mqQf/tbnMfdGaCLsI2lNji0WQYBq63H2j4f8NzwDQ
debug3: hostkeys_foreach: reading file "/root/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /root/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 192.168.178.86
debug1: Host '192.168.178.86' is known and matches the ECDSA host key.
debug1: Found key in /root/.ssh/known_hosts:1
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: /root/.ssh/id_rsa RSA SHA256:z7pVEbPvTyHSWAMnsNDLYqlYF+dBCOUMbfCpMBM1Wao explicit
debug2: pubkey_prepare: done
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /root/.ssh/id_rsa RSA SHA256:z7pVEbPvTyHSWAMnsNDLYqlYF+dBCOUMbfCpMBM1Wao explicit
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: /root/.ssh/id_rsa RSA SHA256:z7pVEbPvTyHSWAMnsNDLYqlYF+dBCOUMbfCpMBM1Wao explicit
debug3: sign_and_send_pubkey: RSA SHA256:z7pVEbPvTyHSWAMnsNDLYqlYF+dBCOUMbfCpMBM1Wao
debug3: sign_and_send_pubkey: signing using rsa-sha2-512 SHA256:z7pVEbPvTyHSWAMnsNDLYqlYF+dBCOUMbfCpMBM1Wao
debug3: send packet: type 50
debug3: receive packet: type 52
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.178.86 ([192.168.178.86]:22).
debug2: fd 4 setting O_NONBLOCK
debug2: fd 5 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting no-more-sessions@openssh.com
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug3: receive packet: type 80
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug3: receive packet: type 4
debug1: Remote: /var/services/homes/RR-admin/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug3: receive packet: type 4
debug1: Remote: /var/services/homes/RR-admin/.ssh/authorized_keys:1: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug3: receive packet: type 91
debug2: channel_input_open_confirmation: channel 0: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x08
debug2: client_session2_setup: id 0
debug1: Sending command: logout
debug2: channel 0: request exec confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: exec request accepted on channel 0
debug2: channel 0: read<=0 rfd 4 len 0
debug2: channel 0: read failed
debug2: channel 0: chan_shutdown_read (i0 o0 sock -1 wfd 4 efd 6 [write])
debug2: channel 0: input open -> drain
debug2: channel 0: ibuf empty
debug2: channel 0: send eof
debug3: send packet: type 96
debug2: channel 0: input drain -> closed
debug2: channel 0: rcvd ext data 48
sh: line 0: logout: not login shell: use `exit'
debug2: channel 0: written 48 to efd 6
debug3: receive packet: type 98
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug3: receive packet: type 96
debug2: channel 0: rcvd eof
debug2: channel 0: output open -> drain
debug2: channel 0: obuf empty
debug2: channel 0: chan_shutdown_write (i3 o1 sock -1 wfd 5 efd 6 [write])
debug2: channel 0: output drain -> closed
debug3: receive packet: type 97
debug2: channel 0: rcvd close
debug3: channel 0: will not send data after close
debug2: channel 0: almost dead
debug2: channel 0: gc: notify user
debug2: channel 0: gc: user detached
debug2: channel 0: send close
debug3: send packet: type 97
debug2: channel 0: is dead
debug2: channel 0: garbage collecting
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
#0 client-session (t4 r0 i3/0 o3/0 e[write]/0 fd -1/-1/6 sock -1 cc -1)

debug3: send packet: type 1
debug1: fd 0 clearing O_NONBLOCK
debug3: fd 1 is not O_NONBLOCK
debug1: fd 2 clearing O_NONBLOCK
Transferred: sent 3616, received 3324 bytes, in 0.1 seconds
Bytes per second: sent 71872.9, received 66069.0
debug1: Exit status 1
Der Remote Server ist einsatzbereit. Der Datensicherungsauftrag wird vorbereitet.
Das Datensicherungsziel wurde lokalisiert.
Start der rsync-Datensicherung...

-------------------------------------------------------------------------------------------------------------------
2023-12-10 17:21:15 - Schreibe rsync-Protokoll fuer den Quellordner...
➜ /volume1/0_Test
-------------------------------------------------------------------------------------------------------------------
opening connection using: ssh -p 22 -i "~/.ssh/id_rsa" -l RR-admin 192.168.178.86 rsync --server --sender -vvvlogDtpre.iLsfxC . /volume1/0_Test (14 args)
receiving incremental file list
[sender] add_rule(-s @eaDir/***)
[sender] add_rule(-s @Logfiles/***)
[sender] add_rule(-s #recycle/***)
[sender] add_rule(-s #snapshot/***)
[sender] add_rule(-s .DS_Store/***)
server_sender starting pid=28874
[sender] make_file(0_Test,*,0)
send_file_list done
[sender] pushing local filters for /volume1/0_Test/
[sender] hiding directory 0_Test/@eaDir because of pattern @eaDir/***
[sender] make_file(0_Test/Ordner 1,*,2)
[sender] make_file(0_Test/Ordner 2,*,2)
send_files starting
[sender] pushing local filters for /volume1/0_Test/Ordner 1/
[sender] make_file(0_Test/Ordner 1/Video 1.mkv,*,2)
[sender] pushing local filters for /volume1/0_Test/Ordner 2/
[sender] make_file(0_Test/Ordner 2/Video 2.mkv,*,2)
[sender] make_file(0_Test/Ordner 2/Video 3.mkv,*,2)
recv_file_name(0_Test)
received 1 names
recv_file_list done
recv_file_name(0_Test/Ordner 1)
recv_file_name(0_Test/Ordner 2)
received 2 names
recv_file_list done
get_local_name count=3 /volume1/0_Test/0_Test/
generator starting pid=6437
recv_files(1) starting
delta-transmission enabled
[receiver] receiving flist for dir 1
recv_generator(0_Test,1)
recv_file_name(0_Test/Ordner 1/Video 1.mkv)
received 1 names
recv_file_list done
[receiver] receiving flist for dir 2
recv_file_name(0_Test/Ordner 2/Video 2.mkv)
recv_generator(0_Test,2)
recv_file_name(0_Test/Ordner 2/Video 3.mkv)
received 2 names
recv_file_list done
set modtime of 0_Test to (1702224646) Sun Dec 10 17:10:46 2023
delete_in_dir(0_Test)
[generator] pushing local filters for /volume1/0_Test/0_Test/0_Test/
recv_generator(0_Test/Ordner 1,3)
recv_generator(0_Test/Ordner 2,4)
[generator] receiving flist for dir 1
recv_file_name(0_Test/Ordner 1/Video 1.mkv)
received 1 names
recv_file_list done
recv_generator(0_Test/Ordner 1,5)
set uid of 0_Test/Ordner 1 from 0 to 1024
set gid of 0_Test/Ordner 1 from 0 to 100
set modtime of 0_Test/Ordner 1 to (1702224678) Sun Dec 10 17:11:18 2023
send_files(2, /volume1/0_Test)
recv_files(0_Test)
delete_in_dir(0_Test/Ordner 1)
[generator] pushing local filters for /volume1/0_Test/0_Test/0_Test/Ordner 1/
0_Test/
recv_generator(0_Test/Ordner 1/Video 1.mkv,6)
set modtime of 0_Test to (1702224646) Sun Dec 10 17:10:46 2023
[generator] receiving flist for dir 2
recv_file_name(0_Test/Ordner 2/Video 2.mkv)
recv_file_name(0_Test/Ordner 2/Video 3.mkv)
received 2 names
recv_file_list done
recv_generator(0_Test/Ordner 2,7)
set uid of 0_Test/Ordner 2 from 0 to 1024
set gid of 0_Test/Ordner 2 from 0 to 100
set modtime of 0_Test/Ordner 2 to (1702224705) Sun Dec 10 17:11:45 2023
delete_in_dir(0_Test/Ordner 2)
[generator] pushing local filters for /volume1/0_Test/0_Test/0_Test/Ordner 2/
recv_generator(0_Test/Ordner 2/Video 2.mkv,8)
recv_generator(0_Test/Ordner 2/Video 3.mkv,9)
generate_files phase=1
send_files(5, /volume1/0_Test/Ordner 1)
send_files(6, /volume1/0_Test/Ordner 1/Video 1.mkv)
send_files mapped /volume1/0_Test/Ordner 1/Video 1.mkv of size 488058719
calling match_sums /volume1/0_Test/Ordner 1/Video 1.mkv
recv_files(0_Test/Ordner 1)
0_Test/Ordner 1/
recv_files(0_Test/Ordner 1/Video 1.mkv)
0_Test/Ordner 1/Video 1.mkv
sending file_sum
false_alarms=0 hash_hits=0 matches=0
sender finished /volume1/0_Test/Ordner 1/Video 1.mkv
send_files(7, /volume1/0_Test/Ordner 2)
send_files(8, /volume1/0_Test/Ordner 2/Video 2.mkv)
send_files mapped /volume1/0_Test/Ordner 2/Video 2.mkv of size 751651389
calling match_sums /volume1/0_Test/Ordner 2/Video 2.mkv
got file_sum
set uid of 0_Test/Ordner 1/.Video 1.mkv.ixn7qw from 0 to 1024
set gid of 0_Test/Ordner 1/.Video 1.mkv.ixn7qw from 0 to 100
set modtime of 0_Test/Ordner 1/.Video 1.mkv.ixn7qw to (1645928238) Sun Feb 27 03:17:18 2022
renaming 0_Test/Ordner 1/.Video 1.mkv.ixn7qw to 0_Test/Ordner 1/Video 1.mkv
recv_files(0_Test/Ordner 2)
0_Test/Ordner 2/
recv_files(0_Test/Ordner 2/Video 2.mkv)
0_Test/Ordner 2/Video 2.mkv
set modtime of 0_Test/Ordner 1 to (1702224678) Sun Dec 10 17:11:18 2023
sending file_sum
false_alarms=0 hash_hits=0 matches=0
sender finished /volume1/0_Test/Ordner 2/Video 2.mkv
send_files(9, /volume1/0_Test/Ordner 2/Video 3.mkv)
send_files mapped /volume1/0_Test/Ordner 2/Video 3.mkv of size 679411238
calling match_sums /volume1/0_Test/Ordner 2/Video 3.mkv
got file_sum
set uid of 0_Test/Ordner 2/.Video 2.mkv.yApq41 from 0 to 1024
set gid of 0_Test/Ordner 2/.Video 2.mkv.yApq41 from 0 to 100
set modtime of 0_Test/Ordner 2/.Video 2.mkv.yApq41 to (1653010368) Fri May 20 03:32:48 2022
renaming 0_Test/Ordner 2/.Video 2.mkv.yApq41 to 0_Test/Ordner 2/Video 2.mkv
recv_files(0_Test/Ordner 2/Video 3.mkv)
0_Test/Ordner 2/Video 3.mkv
sending file_sum
false_alarms=0 hash_hits=0 matches=0
sender finished /volume1/0_Test/Ordner 2/Video 3.mkv
got file_sum
set uid of 0_Test/Ordner 2/.Video 3.mkv.UkwRXi from 0 to 1024
set gid of 0_Test/Ordner 2/.Video 3.mkv.UkwRXi from 0 to 100
set modtime of 0_Test/Ordner 2/.Video 3.mkv.UkwRXi to (1653049447) Fri May 20 14:24:07 2022
renaming 0_Test/Ordner 2/.Video 3.mkv.UkwRXi to 0_Test/Ordner 2/Video 3.mkv
set modtime of 0_Test/Ordner 2 to (1702224705) Sun Dec 10 17:11:45 2023
send_files phase=1
recv_files phase=1
generate_files phase=2
send_files phase=2
send files finished
total: matches=0 hash_hits=0 false_alarms=0 data=1919121346
recv_files phase=2
recv_files finished

generate_files phase=3
rsync[6442] (receiver) heap statistics:
arena: 831488 (bytes from sbrk)
ordblks: 2 (chunks not in use)
smblks: 2
hblks: 2 (chunks from mmap)
hblkhd: 401408 (bytes from mmap)
allmem: 1232896 (bytes from sbrk + mmap)
usmblks: 0
fsmblks: 128
uordblks: 700368 (bytes used)
fordblks: 131120 (bytes free)
keepcost: 127664 (bytes in releasable chunk)
generate_files finished

rsync[6437] (generator) heap statistics:
arena: 540672 (bytes from sbrk)
ordblks: 4 (chunks not in use)
smblks: 0
hblks: 2 (chunks from mmap)
hblkhd: 401408 (bytes from mmap)
allmem: 942080 (bytes from sbrk + mmap)
usmblks: 0
fsmblks: 0
uordblks: 406288 (bytes used)
fordblks: 134384 (bytes free)
keepcost: 131792 (bytes in releasable chunk)

Number of files: 6 (reg: 3, dir: 3)
Number of created files: 6 (reg: 3, dir: 3)
Number of deleted files: 0
Number of regular files transferred: 3
Total file size: 1.92G bytes
Total transferred file size: 1.92G bytes
Literal data: 1.92G bytes
Matched data: 0 bytes
File list size: 1.02K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 204
Total bytes received: 1.92G

sent 204 bytes received 1.92G bytes 36.56M bytes/sec
total size is 1.92G speedup is 1.00
client_run2 waiting on 6440
[generator] _exit_cleanup(code=0, file=main.c, line=2006): about to call exit(0)
-------------------------------------------------------------------------------------------------------------------
Hinweis: Die Konfiguration des Basic Backup Auftrages wurde gesichert.
Hinweis: Der Remote Server wurde nicht heruntergefahren!
-------------------------------------------------------------------------------------------------------------------
2023-12-10 17:22:07 - Der Datensicherungsauftrag Test ist nun abgeschlossen.
 

RR!!

Benutzer
Mitglied seit
10. Jun 2016
Beiträge
10
Punkte für Reaktionen
1
Punkte
3
Achso, klasse und Danke für die Hilfe @Tommes und @luddi !(y)(y)(y)

Eine Frage hätte ich noch, ich möchte einen kompletten freigegebenen Ordner sichern mit allen Unterordnern. Dieser besteht also auf der abgebenden NAS und auch auf der Backup-NAS, kann ich es irgendwie umgehen, hier extra im Ziel noch ein Zielverzeichnis angeben zu müssen? Mein Zielverzeichnis ist ja eigentlich der freigegebene Ordner.
 
  • Like
Reaktionen: maxblank

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
@RR!!
Hammer. Vielen Dank für deine Geduld, fürs testen und das wir dank @luddi den Fehler finden konnten. Ich werde es heut jedoch nicht mehr schaffen, mich weiter mit dem Problem zu beschäftigen. Ich schau mir das die Tage aber nochmal in Ruhe an, führe entsprechende Tests durch in der Hoffnung, das immer wiederkehrende Leerzeichenproblem auch an dieser Stelle zu lösen.

@luddi
Vielen Lieben Dank auch dir für deine hilfreichen Tests und dein Engagement. Leerzeichen sind unter Linux echt die Pest. Daher bin ich mittlerweile auch dazu übergegangen Leerzeichen durch Binde- oder Unterstriche zu ersetzten. Aber wie sagt man bei uns im Rheinland immer „Jede Jeck is anders“ und wir werden nicht alle auf unsere Seite ziehen können.

Tommes
 
  • Like
Reaktionen: maxblank und dil88

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
Eine Frage hätte ich noch…
Mir ist echt ein Rätsel, warum diese Frage immer und immer wieder gestellt wird. Daher eine Gegenfrage: Lassen es andere Backupprogramme auf deiner DiskStation zu, direkt in einen freigegebenen Ordner zu sichern? Es hat schon Gründe, das dies eben nicht geht und ich habe das im Beitrag #502 jemand anderem auch bereits versucht zu erklären.

Offiziell unterstütze ich diesen Ansatz demnach nicht, jedoch kann man den Pfad zum Zielordner im Nachhinein in der entsprechenden .config Datei so umbiegen, wie man ihn haben will. Aber hier hört dann meine Unterstützung für Basic Backup auf und ihr seid selbst für alle negativen Seiteneffekte verantwortlich. Auch werden diese Änderungen nach dem editieren über die Benutzeroberfläche wieder überschrieben bzw. wird zum speichern der Änderungen wieder ein Zielordner benötigt.

Tommes
 

RR!!

Benutzer
Mitglied seit
10. Jun 2016
Beiträge
10
Punkte für Reaktionen
1
Punkte
3
Ah sorry, über den Beitrag #502 hab ich wohl einfach drüber gelesen. Aber eine Erklärung enthält er eigentlich auch nicht.

Der Wunsch scheint einen Nerv zu treffen. Sorry dafür. Auch wenn mir nicht klar ist, was so böse daran ist. Geht das in die Richtung, dass eine App fürs Backup keine fürs Synchronisieren ist?

VG
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
Geht das in die Richtung, dass eine App fürs Backup keine fürs Synchronisieren ist?
Ganz genau. Ziel meiner App ist es, eure Daten in Sicherheit zu bringen und nicht, eine 1 zu 1 Kopie eines gemeinsamen Ordners auf zwei oder mehr DiskStation zu verteilen und ggfl. wechselseitig synchron zu halten. Genau deshalb geht Hyper Backup hier den selben Weg wie ich... oder umgekehrt. Auch läuft man bei einer solchen, einseitigen Synchronisation immer Gefahr, das man etwas am falschen Ende verändert und so bei der nächsten Synchronisation einen Datenverlust erleidet. Von daher sollte hier, wenn Überhaupt, eine wechselseitige Synchronisation zum Einsatz kommen, die Basic Backup aber nicht anbietet.

Der Wunsch scheint einen Nerv zu treffen.
Das mag durchaus sein. Mich hingegen nervt dieser Wunsch eher, da ich diesen im Zusammenhang mit einem Backupsystem nicht für zielführend halte. Sicherlich könnte ich diese Funktion einbauen und somit das direkte sichern in einen gem. Ordner gestatten. Aber ich trage trotz das mich die GPL3 von allen möglichen Datenverlusten freispricht immer noch die Verantwortung für mein System und ich kann euch nicht sehenden Auges ins Unglück stürzen lassen. Es passieren schon genug komische Dinge innerhalb meines Programms, die ich nicht auf den Zettel hatte, genau wie dieses Leerzeichenproblem von dir grade. Jemand anderes wollte ein paar Seiten zuvor in diesem Thread, das ich den Punkt im Ordnernamen zulasse. Am Ende hat er damit versucht, per Remote Verbindung auf sein fritz.nas zu schreiben. Stattdessen hat er aber alles auf die Systempartition seiner DiskStation geschaufelt und somit sein System aufs Kreuz gelegt. Und das ist u.a. nur passiert, weil ich es zugelassen habe, das man einen Punkt im Ordnernamen verwenden kann. Egal…

Ihr müsst euch leider damit abfinden, das ich das direkte sichern in einen gem. Ordner niemals nie unterstützen, geschweige denn freigeben werde.

Tommes
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ihr müsst euch leider damit abfinden, das ich das direkte sichern in einen gem. Ordner niemals nie unterstützen, geschweige denn freigeben werde.
Oder ihr forkt das Repo von @Tommes und baut euch eure eigene Version mit all den Wünschen die nicht vom Autor im Original umgesetzt werden.
Aber das werden wohl die wenigsten bis überhaupt niemand von euch hier aus dem Forum tun :)
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
Ich habe jetzt mal diverse Tests durchgeführt, wo sowohl das Target als auch die Sources mehrere Leerzeichen im Pfad enthalten. Ein mit diesen Pfaden ausgeführtes Pull-Backup spuckte mir die gleiche Fehlermeldung aus wie bei @RR!! ... von daher lässt sich der Fehler auch bei mir reproduzieren.

Soweit, so gut. Also habe ich den Hinweis von @luddi aufgegriffen und mit den Single-Quotes ein wenig herumgespielt, so wie ich es bei einem Push-Backup im rsync-Script bereits für "'${target}'" verwende. Lustigerweise benötigt man diese zusätzlichen Single-Quotes bei einem Push-Backup nur bei der target-Variablen, nicht jedoch bei der source-Variaben "${source}".

Das wiederum brachte mich auf die Idee, es bei einem Pull-Backup genau andersherum zu probieren, so das nicht die target-Variable, sondern eben die source-Variable "'${source}'" in zusätzliche Single-Quotes gesetzt wird, die target-Variable jedoch nicht. Und was soll ich sagen... es funktioniert... ich weiß nur nicht, warum :ROFLMAO:

Demnach muss die Zeile 616 im rsync-Script so lauten...
Bash:
-e "ssh -p ${var[sshport]} -i ~/.ssh/${var[privatekey]}" ${var[sshuser]}@${var[sshpull]}:"'${source}'" "${target}" > >(tee -a "${script_log}") 2>&1

Kannst du das bitte mal testen @luddi und mir sagen, ob du zu dem gleichen Ergebnis kommst? Vielleicht hast du ja auch eine Ahnung, warum das so ist? Mir erschließt sich das grade nicht wirklich. Vermutlich hat das aber etwas mit der SSH-Übertragung zu tun, denn bei einem Push-Backup muss auf dem Remote-Server das Target angelegt werden und bei einem Pull-Backup werden die Sources vom Remote Server abgeholt. Beides läuft dabei über die SSH Verbindung und das könnte der Grund für das zusätzliche Single-Quoting sein. Bei einem lokalen Backup braucht man nämlich weder das Eine, noch das Andere.

Tommes
 
Zuletzt bearbeitet:

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Hallo @Tommes, nach einer kurzen Recherche und durchforsten des rsync manuals bin ich zu folgender Erklärung gekommen. Auch ich habe bei diesem Thema wieder einmal etwas dazu gelernt.

Die Dateinamen werden an den remote Server über die remote Shell gesendet und werden somit verändert, weil die Leerzeichen nicht als Teil des Strings interpretiert werden, sondern als Trenner von einzelenen Argumenten.

Möchte man das verhindern gibt es ein Optionsschalter, mit dem die Dateinamen nicht über die remote Shell, sondern über das Protokoll an den remote rsync server gesendet werden. Dies hat zur Folge, dass auch die Leerzeichen zum String gehören, die man übertragen möchte.

Auszug aus dem rsync manual:
--secluded-args, -s
This option sends all filenames and most options to the remote rsync via the protocol (not the remote shell command line) which avoids letting the remote shell modify them. Wildcards are expanded on the remote host by rsync instead of a shell.

[...]

This option used to be called --protect-args (before 3.2.6) and that older name can still be used (though specifying it as -s is always the easiest and most compatible choice).

Auf DSM läuft aktuell die Version 3.2.1 von rsync und beherrscht somit nicht den langen Namen des Optionsschalters --secluded-args und heißt bei den älteren rsync Versionen vor 3.2.6 --protect-args.
Was aber in den alten und neuen Versionen gleich ist, ist der Kurzname des Optionsschalters mit -s.

-s, --protect-args no space-splitting; only wildcard special-chars

Es gibt nun drei Möglichkeiten den String korrekt an den remote Server zu übergeben. Dabei ist es ganz egal ob der remote Server als Quelle oder als Ziel im rsync Befehl verwendet wird. Es geht allein um den Zugriff auf den Remote Server und das korrekte Übertragen der Strings.

  1. Wie bereits von @Tommes herausgefunden für den Remote Server die Variable mit Single Quotes zu versehen
    Bash:
    target="/ordner mit leerzeichen"
    rsync -ah -v -e "ssh -p 22 -i ~/.ssh/luddi_at_raspi_id_rsa" ~/file luddi@192.168.132.103:"'${target}'"

  2. Man wählt den Optionsschalter -s für den rsync Befehl und bleibt bei der Variable allein mit den Double Qoutes ohne zusätzlich Single Qoutes
    Bash:
    target="/ordner mit leerzeichen"
    rsync -s -ah -v -e "ssh -p 22 -i ~/.ssh/luddi_at_raspi_id_rsa" ~/file luddi@192.168.132.103:"${target}"

  3. Man lässt den Optionsschalter und die Single Qoutes weg, verwendet aber eine Substitution für die Variable um alle darin vorhandenen Leerzeichen mit einem Backslash zu escapen
    Bash:
    target="/ordner mit leerzeichen"
    rsync -ah -v -e "ssh -p 22 -i ~/.ssh/luddi_at_raspi_id_rsa" ~/file luddi@192.168.132.103:"${target// /\\ }"
Ich denke, das ist des Rätsels Lösung und du lieber @Tommes darfst entscheiden welche der aufgezählten Möglichkeiten dir am elegantesten erscheint, um die Änderung an deinem Script vorzunehmen. Du hast also die Qual der Wahl.
 
Zuletzt bearbeitet:

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.665
Punkte für Reaktionen
2.071
Punkte
829
Wirklich hervorragend, vielen Dank!

Nur am Rande: In meinem DSM 7.2.1-69057 Update 3 gibt rsync (genauer /bin/rsync) die Versionsnummer 3.1.2 aus. Zahlendreher bei Dir?
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
Chapeau!
Deine Nachforschungen als auch dein Feedback zeigen einmal mehr, das du dein Handwerk verstehst. Ob ich das in der kürze bzw. überhaupt herausgefunden hätte, wage ich für den Moment zu bezweifeln, zumal allein die rsync Manpage schon ziemlich mächtig ist.

Am sympathischsten ist mir am Ende wohl der Optionsschalter -s, wobei ich die Verwendung von Single-Quotes auch nicht wirklich unsympathisch finde. Für diejenigen, die später mal etwas aus meinen bash Code lesen, verstehen und vielleicht auch lernen wollen, wäre die Verwendung von -s wohl am sinnvollsten. Geheimnisvoller wäre dagegen die Verwendung von Single-Quotes. Ich werde das mit dem Optionsschalter heut Abend nochmal durchtesten und zeitnah ein Update rausbringen.

Ach ja… @dil88 …ich freu mich wirklich, in letzter Zeit wieder hier von dir zu lesen, war es doch längere Zeit still um dich geworden.

Tommes
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.665
Punkte für Reaktionen
2.071
Punkte
829
Und ich erst, @Tommes! Sagenhaft, was Du in letzter Zeit gemacht hast. Habe gestern Autopilot eingebaut, das war der letzte Stein in meinem neuen NAS-Zuhause. Vielen Dank dafür!

Synologys Produktentwicklung war (und ist leider) so konservativ und andere Dinge wie Familie wichtiger, das hat meine Motivation irgendwann auf Null gebracht. Aber jetzt musste ich mich wieder schlau machen. Und das geht in diesem tollen Haufen natürlich nur, indem ich wieder mitmache. :D
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
Habe gestern Autopilot eingebaut, das war der letzte Stein in meinem neuen NAS-Zuhause. Vielen Dank dafür!
Es freut und ehrt mich, das dir AutoPilot gefällt. Aktuell läuft eine Anfrage um AutoPilot besser vor Leuten zu schützen, die Böses im Schilde führen. Evtl. wird es in Zukunft noch ein paar größere Änderungen geben. Zur Zeit bin ich aber noch mit der theoretischen Umsetzung beschäftigt. Es kann also noch etwas dauern.

Familie geht natürlich immer vor. Um mich ist es hier aber auch ruhiger geworden. Ich stehe zwar weiterhin Rede und Antwort zu meinen Apps und kümmer mich, aber ansonsten bin ich Forum eher wenig unterwegs. Dinge und Interessen ändern sich halt. Aber noch bin ich nicht komplett in der Versenkung verschwunden, aber wer weiß, vielleicht schmeiße ich mit Einführung von DSM 8 die Flinte endgültig ins Korn 😂 wer weiß das schon

Tommes
 
  • Like
Reaktionen: dil88

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
  • Love
  • Like
Reaktionen: dil88 und Tommes

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Für diejenigen, die später mal etwas aus meinen bash Code lesen, verstehen und vielleicht auch lernen wollen, wäre die Verwendung von -s wohl am sinnvollsten
Oder man kommentiert die entsprechende Stelle im Code. Das ist auch oft für uns bzw. denjenigen der es programmiert hat selbst gut wenn man sich an gewisse Details nicht erinnern kann.
Kommentare im Code schaden nicht und tragen oft zum besseren Verständnis bei.
Auch ich kann da nur aus Erfahrung sprechen.
 
  • Like
Reaktionen: Tommes

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314

Basic Backup Version 0.8-200 vom 12.12.2023

Release Notes

  • Update Bootsrap Icons auf 1.11.2
  • Enthielten bei einem Pull-Backup die Datensicherungsquellen Leerzeichen im Verzeichnispfad, brach das Backup mit der Fehlermeldung [ ERROR: module is write only rsync error: syntax or usage error (code 1) ] ab. Fehler wurde behoben. Vielen Dank an @luddi und @RR!!

Weiterhin viel Spaß mit Basic Backup

Tommes
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.669
Punkte für Reaktionen
1.566
Punkte
314
Oder man kommentiert die entsprechende Stelle im Code.

Erlädischt...
Bash:
# Notes: To transfer folder and file names from or to a remote shell
# that contain spaces and/or special characters, the rsync option
# --protect-args (-s) is used. Alternatively, folder and file names
# can also be set in additional single quotes.
# Example: either ... rsync -s "${source}" ... or ... "'${source}'"
 
  • Like
Reaktionen: luddi und dil88

Thonav

Benutzer
Sehr erfahren
Mitglied seit
16. Feb 2014
Beiträge
7.890
Punkte für Reaktionen
1.510
Punkte
274
Bitte auch noch die Plattdeutsche Übersetzung :)
 


 

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