thay thế smbclient cho các tập tin lớn


11

Tôi đang sử dụng smbclient để chuyển một tập hợp các tệp lớn (80 GB) hàng đêm từ hệ thống Linux sang chia sẻ Windows. Gần đây, vì bất kỳ lý do gì, tôi đã nhận được thời gian chờ I / O:

cli_push returned NT_STATUS_IO_TIMEOUT

nguyên nhân khiến việc truyền tệp đang hoạt động bị hủy bỏ và bị xóa khỏi chia sẻ Windows.

Điều này có thể là do lỗi Samba 8498 chưa được giải quyết (hoặc có thể không). Hệ thống Windows không thuộc quyền kiểm soát của tôi, vì vậy tôi không thể cài đặt máy chủ ssh (để sử dụng scp hoặc sftp) và không muốn phụ thuộc vào việc triển khai NFS của Microsoft.

Có một giải pháp thay thế đơn giản, tiêu chuẩn khác cho phép tôi chuyển 80GB dữ liệu đáng tin cậy từ Linux sang Windows qua mạng một cách thường xuyên (mạng là GB ethernet, vì vậy băng thông không phải là vấn đề)?


xem xét sử dụng các công cụ như rsync với chế độ một phần được kích hoạt. Ngay cả WinScp cũng sẽ giúp. Hoặc cung cấp một bộ lưu trữ NAS phổ biến với NFS trên Unix và CIFS trên Windows, do đó không cần phải chuyển hoàn toàn nếu nó là cùng một mạng. Tốt nhất là thiết lập một torrent, bao gồm các mạng khác. ;-)
Nikhil Mulley

chỉ tình cờ tìm thấy "chương trình chuyển tập tin 123go" trên google
Nikhil Mulley

Câu trả lời:


9

Hãy thử sử dụng các tùy chọn ổ cắm này trên smbclient

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

Tôi thường xuyên sao chép các tệp 40 + GB từ Windows sang máy chủ phương tiện Linux mà không gặp lỗi, tốc độ truyền điển hình là 85MB / s với các máy được kết nối qua chuyển đổi gigabit.


1
Cảm ơn vì điều này - điều này đã thoát khỏi lỗi cho tôi; và sao chép chính xác tệp 2G từ Ubunutu sang Windows Share.
monojohnny

Tôi đã thử điều này và các biến thể khác của việc điều chỉnh các giá trị cho SO_RCVBUF và SO_SNDBUF mà không gặp may. Tệp tôi đang cố tải lên khoảng 8gig qua mạng cục bộ với mất gói không.
mhvelplund

2

Sử dụng curl

Tôi đang chạy phiên bản smbclient 4.9.4 đang cố gắng chuyển tệp 97 MiB từ Arch Linux sang Windows và gọi smbclient với --socket-options='TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072' tư cách là người dùng bsd khuyến nghị vẫn không thành công cli_push returned NT_STATUS_IO_TIMEOUT.

Kể từ phiên bản 7.40 , curl hỗ trợ giao thức .

Vì vậy, tôi đã sử dụng điều này để tải lên moderately_sized_filetừ Linux lên dịch vụ OurRemoteDirectorytrên máy Windows tại 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/

Đối với tôi, curl đã tải lên tệp một cách đáng tin cậy mỗi lần và cũng hiển thị tiến trình tải lên, điều này thật tuyệt.

Lưu ý rằng curl chưa hỗ trợ tạo thư mục trên máy chủ từ xa.

Do đó, bạn có thể cần phải tạo /Path/To/Dir/bằng lệnh sau (nhưng smbclient mkdirđã hoạt động mà không gặp sự cố cho đến nay):

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

0

Có lẽ bạn có thể cài đặt máy chủ ftp trên máy chủ linux của mình và yêu cầu quản trị viên Windows gửi tệp hàng đêm?

FTP có một số chức năng hữu ích để chuyển các tệp lớn và cơ chế tạm dừng / tiếp tục. Đối với tệp lớn này, bạn nên chú ý không để phần cứng mạng tắt kết nối không hoạt động quá sớm. Nó có thể đóng kết nối điều khiển của bạn trước khi transfert kết thúc.


Các tệp đang đi theo một cách khác, từ Linux sang Windows
Ex Umbris 17/212

0

nếu

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

vẫn trở về cli_push returned NT_STATUS_IO_TIMEOUT

chỉ cần thêm một tùy chọn thời gian chờ -t <timeout in seconds>

Nó giúp tôi sao chép các tệp khổng lồ (> 200 Tb) của các máy ảo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.