Comment utiliser rsync via ssh avec les adresses IPv6 LLA (adresse locale du lien) sur OSX?

5

J'utilise OSX High Sierra et bash. J'essaie d'utiliser un script de sauvegarde basé sur IPv6 LLA (afin que je parvienne toujours au serveur, sans DHCP, sans noms, etc.).

Avec IPv4, cela fonctionne:

rsync -e ssh /src/dir/* user@192.168.0.1:/dst/dir

Sous Linux / Bash, cela fonctionne:

rsync -e ssh /src/dir/* user@[fe80::a:b:c:d%eth0]:/dst/dir

Mais sur les terminaux OSX, cela ne fonctionnait pas.

ssh: Could not resolve hostname [fe80: nodename nor servname provided, or not known
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52/rsync/io.c(453) [sender=2.6.9]

J'ai essayé beaucoup de combinaisons de citations mais sans succès.

Je vous remercie!

Jorge
la source
1
Est-ce que SSH fonctionne seul avec IPv6?
1
Oui, en utilisant par exemple "utilisateur ssh @ fe80 :: a: b: c: d% en0". Donc, ssh fonctionne bien.
Jorge
La version que vous utilisez peut être pertinente. Que rsync --versiondit sur chaque machine?
Kasperd

Réponses:

8

Le problème était avec la version OSX de rsync. Je ne sais pas exactement quel est le problème. Cela devrait faire partie des fonctionnalités de binaire / version de rsync.

Version OSX:

/usr/bin/rsync --version
rsync  version 2.6.9  protocol version 29
...
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
              inplace, IPv6, 64-bit system inums, 64-bit internal inums

Installer une version de macports:

/opt/local/bin/rsync --version
rsync  version 3.1.2  protocol version 31
...
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags,
    HFS-compression

Bien que les deux prennent en charge IPv6, cette version 2.6.9 distribuée avec OSX ne fonctionne pas comme prévu.

Avec 3.1.2 je peux utiliser:

rsync -e ssh /src/dir/* user@[fe80::a:b:c:d%eth0]:/dst/dir

Merci pour ton aide.

Jorge
la source
Cela fonctionne très bien pour moi avec la version intégrée, je ne suis donc pas convaincu que ce soit la version de macPorts qui l'a corrigée. Je vois deux problèmes possibles: sur macOS, l'interface sera "en0", pas "eth0". En outre, [ ]est un caractère générique de correspondance de caractère shell; il est peu probable que cela corresponde à quoi que ce soit, mais juste au cas où vous devriez mettre des citations autour de lui ( rsync -e ssh /src/dir/* "user@[fe80::a:b:c:d%en0]:/dst/dir")
Gordon Davisson