альтернатива smbclient для больших файлов

11

Я использую smbclient для переноса набора больших файлов (80 ГБ) по ночам из системы Linux в общую папку Windows. В последнее время, по любой причине, я получаю тайм-ауты ввода / вывода:

cli_push returned NT_STATUS_IO_TIMEOUT

что приводит к тому, что активная передача файлов прерывается и удаляется из общего ресурса Windows.

Это может быть связано с нерешенной ошибкой Samba 8498 (а может и нет). Система Windows не находится под моим контролем, поэтому я не могу установить ssh-сервер (для использования scp или sftp) и не хочу зависеть от реализации Microsoft NFS.

Есть ли другая простая, стандартная альтернатива, которая позволила бы мне регулярно и надежно перемещать 80 ГБ данных из Linux в Windows по сети (сеть ГБ Ethernet, поэтому пропускная способность не является проблемой)?

Экс Умбрис
источник
рассмотрите возможность использования таких инструментов, как rsync с включенным частичным режимом. Даже WinScp также должен помочь. Или предоставьте общее хранилище NAS с NFS в Unix и CIFS в Windows, так что вам вообще не понадобится переносчик, если это одна и та же сеть. Лучше всего установить торрент, подключить другую сеть. ;-)
Nikhil Mulley
просто наткнулся на «программы передачи файлов 123Go» поиск в гугле
Нихилу Mulley

Ответы:

9

Попробуйте использовать эти параметры сокета в smbclient

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

Я регулярно копирую файлы 40+ ГБ с Windows на медиа-сервер Linux без ошибок, типичная скорость передачи данных составляет 85 МБ / с на машинах, подключенных через гигабитный коммутатор

BSD
источник
1
Спасибо за это - это избавило меня от ошибки; и правильно скопировал файл 2G с Ubunutu на общий ресурс Windows.
monojohnny
Я попробовал этот и другие варианты корректировки значений для SO_RCVBUF и SO_SNDBUF без удачи. Файл, который я пытаюсь загрузить, составляет около 8 гигабайт по локальной сети с нулевой потерей пакетов.
mhvelplund
2

С помощью curl

Я использую smbclient версии 4.9.4, пытаюсь перенести файл 97 МБ из Arch Linux в Windows и вызываю smbclient, --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072' поскольку пользователь, рекомендованный bsd, все еще не работает cli_push returned NT_STATUS_IO_TIMEOUT.

Начиная с версии 7.40 , curl поддерживает протокол .

Таким образом, я использовал это для загрузки moderately_sized_fileиз Linux в службу OurRemoteDirectoryна компьютере с Windows по адресу 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/

Для меня curl загрузил файл надежно каждый раз, а также отображает ход загрузки, что приятно.

Обратите внимание, что curl еще не поддерживает создание каталогов на удаленном хосте.

Следовательно, вам может потребоваться создать /Path/To/Dir/с помощью следующей команды (но до smbclient mkdirсих пор работало без проблем):

smbclient //172.16.17.52/OurRemoteDirectory/ -U MyUserName%MyPassword -W OurWindowsDomain -c 'mkdir Path/To/Dir/'
Матиас Браун
источник
0

Может быть, вы можете установить ftp- сервер на ваш linux-сервер и попросить администратора Windows отправить файл ночью?

FTP имеет несколько полезных функций для передачи больших файлов и механизм паузы / возобновления. Для файлов этого большого, вы должны позаботиться , чтобы не иметь сетевое оборудование выключая неактивные соединения слишком рано. Он может закрыть ваше контрольное соединение до окончания передачи.

Корен
источник
Файлы идут другим путем, от Linux до Windows
Ex Umbris
0

если

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

все еще возвращается cli_push returned NT_STATUS_IO_TIMEOUT

просто добавьте время ожидания -t <timeout in seconds>

Это помогает мне копировать огромные файлы (> 200 ТБ) виртуальных машин

Игорь Воскресенский
источник