Éditer :
Cette question portait à l’origine sur la question de l’inversion du sens de la connexion SSH sur le transfert, mais j’ai réalisé que ce n’était pas la cause des problèmes que je rencontrais, je l’ai donc simplifiée.
Bien que documentation Ubunt de zfs
ne traite que de l'envoi-réception par fichier, cette approche n'est pas réalisable avec de grands ensembles de données. la documentation Oracle recommande en utilisant ssh
dans le tube, c.-à-d.,
# zfs send tank/dana@snap1 | ssh sys2 zfs recv newtank/dana
Cependant, en essayant cette procédure avec un ensemble de données de test que j'ai créé, contenant un seul fichier 10M, je rencontre le problème de la mise en œuvre par Ubuntu Xenial de zfs
(ZFS-sur-Linux) nécessitant des privilèges root (sur le serveur principal). côté récepteur):
$ Sudo -i
# zfs send tank/dana@snap1 | ssh sys2 zfs recv newtank/dana
Permission denied the ZFS utilities must be run as root.
warning: cannot send 'tank/dana@snap1': Broken pipe
J'ai essayé de résoudre ce problème en passant ssh
l'indicateur -t
, c'est-à-dire en le publiant.
# zfs send tank/dana@snap1 | ssh -t sys2 "Sudo zfs recv newtank/dana"
qui échoue avec
Pseudo-terminal will not be allocated because stdin is not a terminal.
avant de demander les références de sys2
, après quoi les messages suivants sont reçus:
Sudo: no tty present and no askpass program specified
warning: cannot send 'tank/dana@snap1': Broken pipe
Tenter d’effectuer un test de transfert en utilisant l’autre direction, en utilisant
# ssh -t sys2 "Sudo zfs send newtank/dana2@snap1" | zfs recv tank/dana2
se bloque simplement après avoir demandé les informations d'identification de sys2
. (Rappelez-vous, chaque instantané ne contient qu'un fichier 10M, donc je crois qu'il n'essaye pas de faire quoi que ce soit, mais je ne sais pas pourquoi il se bloque.)
Sudo zfs send tank/dana@snap1 | ssh sys2Root zfs recv newtank/dana
où sys2root est une entrée dans ~/.ssh/config, c'est-à-dire:
Host sys2Root
HostName 192.168.0.x
User root