альтернатива 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 МБ / с на машинах, подключенных через гигабитный коммутатор


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 ТБ) виртуальных машин

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.