Eu tenho um dispositivo Linux embarcado NAS que tem o Samba4 instalado e em execução. Eu configurei um compartilhamento de samba e estou tentando fazer uma cópia do lado do servidor dentro desse compartilhamento de samba de um cliente. É isso que estou tentando fazer: link
Eu tentei pela primeira vez no Windows7. Primeiro montei esse compartilhamento de samba do meu laptop WIN7 e use o comando robocopy para copiar um arquivo grande entre dois diretórios dentro desse compartilhamento. E eu posso ver isso funciona. O robocpoy é realmente rápido para copiar um arquivo grande. E também analiso o tráfego de rede usando o wireshark. Tem algo como: Ioctl req FSCTL_SRV_COPYCHUNK_WRITE Arquivo: ... e Ioctl resp FSCTL_SRV_COPYCHUNK_WRITE Arquivo: ...
Então eu tentei no ubuntu15. Tenho certeza de que o kernel do Linux do ubuntu15 suporta o CIFS_IOC_COPYCHUNK_FILE ioctl. Eu montei esse compartilhamento usando: mount.cifs // [host_ip] / [share_name] [mount_path] -o versão = 2.1, username = root. Tenho certeza que tem que ter vers = 2.1, porque para usar o lado do servidor de cópia tem que usar o protocolo SMB2. E novamente baseado no link , ele diz que "cloner" faz essa função. A principal função aqui é chamar: "ioctl (dst_fd, CIFS_IOC_COPYCHUNK_FILE, src_fd)". Então eu baixei e compilei "cloner" e executei este comando, mas ele não funciona. Basicamente, o comando cloner leva uma eternidade e nunca para (kill -9 até não funciona). Eu uso wireshark monitora o tráfego de rede também. O que eu vejo é: Ele está enviando o mesmo pedido que o Windows7 faz que é Ioctl req FSCTL_SRV_COPYCHUNK_WRITE File: ..., mas está recebendo um erro dizendo: Ioctl response, Error: status_invalid_device_request
Por que o cloner no linux não funciona, mas o robocopy no win7 funciona? Por que está recebendo erro: status_invalid_device_request? O que está faltando no cloner? Se há algo faltando aqui ou um bug como consertar isso? Existe algum código ou ferramenta de cópia do lado do servidor do lado do cliente que eu possa usar?