alternatif smbclient untuk file besar

11

Saya menggunakan smbclient untuk mentransfer satu set file besar (80GB) setiap malam dari sistem Linux ke Windows share. Akhir-akhir ini, untuk alasan apa pun, saya mendapatkan batas waktu I / O:

cli_push returned NT_STATUS_IO_TIMEOUT

yang menyebabkan transfer file aktif dibatalkan dan dihapus dari Windows share.

Ini mungkin karena bug Samba 8498 yang tidak terselesaikan (atau mungkin tidak). Sistem Windows tidak di bawah kendali saya, jadi saya tidak dapat menginstal server ssh (menggunakan scp atau sftp), dan tidak ingin bergantung pada implementasi NFS dari Microsoft.

Apakah ada alternatif sederhana dan standar yang akan memungkinkan saya memindahkan 80GB data dengan andal dari Linux ke Windows melalui jaringan secara teratur (jaringannya adalah GB ethernet, jadi bandwidth bukan masalah)?

Ex Umbris
sumber
pertimbangkan untuk menggunakan alat seperti rsync dengan mode parsial diaktifkan. Bahkan WinScp juga harus membantu. Atau sediakan penyimpanan NAS umum dengan NFS di Unix dan CIFS di Windows, jadi tidak perlu transferr sama sekali jika itu jaringan yang sama. Yang terbaik adalah mengatur torrent, memetikan jaringan lain. ;-)
Nikhil Mulley
baru saja menemukan "123go file transfer program" pencarian di google
Nikhil Mulley

Jawaban:

9

Coba gunakan opsi soket ini di smbclient

smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'

Saya secara teratur menyalin 40 + GB file dari Windows ke server media Linux tanpa kesalahan, kecepatan transfer tipikal adalah 85MB / s dengan mesin yang terhubung melalui sakelar gigabit.

bsd
sumber
1
Terima kasih untuk ini - ini menghilangkan kesalahan untuk saya; dan dengan benar menyalin file 2G dari Ubunutu ke Windows Share.
monojohnny
Saya sudah mencoba ini dan variasi penyesuaian nilai untuk SO_RCVBUF dan SO_SNDBUF tanpa hasil. File yang saya coba unggah sekitar 8gig melalui jaringan lokal tanpa kehilangan paket.
mhvelplund
2

Menggunakan curl

Saya menjalankan versi smbclient 4.9.4 mencoba untuk mentransfer file 97 MiB dari Arch Linux ke Windows dan memanggil smbclient dengan --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072' sebagai bsd yang direkomendasikan pengguna masih gagal cli_push returned NT_STATUS_IO_TIMEOUT.

Sejak versi 7.40 , curl mendukung protokol .

Jadi, saya menggunakan ini untuk mengunggah moderately_sized_filedari Linux ke layanan OurRemoteDirectorydi mesin Windows di 172.16.17.52:

curl --upload-file /home/me/moderately_sized_file --user "OurWindowsDomain/MyUserName:MyPassword" smb://172.16.17.52/OurRemoteDirectory/Path/To/Dir/

Bagi saya, curl telah mengunggah file dengan andal setiap kali dan juga menampilkan kemajuan unggahan, yang bagus.

Perhatikan bahwa curl belum mendukung pembuatan direktori pada host jarak jauh.

Oleh karena itu, Anda mungkin perlu membuat /Path/To/Dir/menggunakan perintah berikut (tetapi smbclient mkdirsejauh ini telah bekerja tanpa masalah):

smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'
Matthias Braun
sumber
0

Mungkin Anda dapat menginstal server ftp di server linux Anda, dan meminta admin Windows untuk mengirim file itu setiap malam?

FTP memiliki beberapa fungsi yang berguna untuk mentransfer file besar dan mekanisme jeda / melanjutkan. Untuk file sebesar ini, Anda harus berhati-hati untuk tidak memiliki perangkat keras jaringan mematikan koneksi yang tidak aktif terlalu dini. Itu dapat menutup koneksi kontrol Anda sebelum transfert berakhir.

Coren
sumber
File bergerak sebaliknya, dari Linux ke Windows
Ex Umbris
0

jika

smbclient --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072'

masih kembali cli_push returned NT_STATUS_IO_TIMEOUT

cukup tambahkan opsi batas waktu -t <timeout in seconds>

Ini membantu saya untuk menyalin file besar (> 200 Tb) dari mesin virtual

Igor Voskresenskiy
sumber