sao chép tập tin từ windows sang Linux


16

Tôi đang viết một kịch bản. Nó sẽ chạy một máy linux. mục tiêu của nó bao gồm linux, solaris và windows.

Tôi biết rằng tôi có thể sử dụng scp để sao chép các tệp giữa * nix. Nhưng làm thế nào về sao chép tập tin từ windows?

Các cửa sổ này là các máy kiểm tra, không thể cài đặt phần mềm cụ thể, vì HĐH có thể được cài đặt lại thường xuyên.

Câu trả lời:


21

Sử dụng Samba .

Samba cung cấp dịch vụ chia sẻ tệp tương thích với Windows.

Bạn có thể chia sẻ một thư mục (ví dụ /srv/samba/sharename) trên máy tính Linux của bạn và truy cập nó từ Windows như thế này : \\linuxservername\sharename. Nó không cần bất kỳ phần mềm bổ sung nào về phía Windows.

Samba được bao gồm trong hầu hết các bản phân phối Linux. Cài đặt nó bằng trình quản lý gói, ví dụ:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Để định cấu hình Samba, xem:

hoặc tìm kiếm Google để tìm hướng dẫn cho bản phân phối của bạn.

Lưu ý rằng bạn có thể cần định cấu hình tường lửa Linux của mình, trong trường hợp bạn sử dụng một, để chấp nhận kết nối với các cổng 137 / tcp, 138 / tcp, 139 / tcp và 445 / tcp (xem cái nàycái này ).


Trong phần mô tả ở trên, máy tính Linux là một máy chủ Samba và Windows gắn kết một phần từ nó.

Trong bình luận của bạn dưới đây, bạn đề cập rằng bạn muốn tự động hóa quá trình chuyển . Điều này có thể đạt được bằng cách đảo ngược các vai trò để Windows hoạt động như máy chủ và Linux kết nối với nó bằng cách sử dụng smbclient.

Với smbclientbạn không cần phải gắn kết chia sẻ Windows. Ví dụ: để truy xuất C:\Directory\file.txtvà sao chép nó /tmpvào máy tính Linux của bạn, hãy làm điều này:

smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password

-cLệnh thực thi. Xem man smbclientđể biết chi tiết.

-U Tên người dùng và mật khẩu để truy cập vào chia sẻ được chỉ định như username%password

Sửa đổi nó theo nhu cầu của bạn và thêm nó vào kịch bản của bạn.


@max, Cảm ơn câu trả lời tuyệt vời của bạn. Tôi biết samba có thể làm việc với Windows. Nhưng nó vẫn cần sự tham gia của con người khi sao chép một tập tin. Vì tập lệnh của tôi sẽ chạy trên một linux và máy đã cài đặt samba, làm thế nào tôi có thể để một tập lệnh thực hiện công việc sao chép? Có vẻ như tôi đã gắn đĩa Windows vào Linux tốt hơn, sau đó tôi có thể truy cập nó trong Linux. Samba có thể làm điều này?
Alex

Vâng, Samba có thể làm điều này. Thậm chí tốt hơn, bạn không cần phải gắn kết chia sẻ Windows. Bạn có thể sử dụng smbclientđể kết nối với chia sẻ Windows, sao chép tệp và ngắt kết nối. Tôi chỉnh sửa câu trả lời của mình, hãy xem nó.
jaume

Bạn được chào đón, tôi rất vui vì tôi có thể giúp đỡ.
jaume

1
Đặc biệt là -ctùy chọn có giá trị sử dụng trong các trường hợp đơn giản. Trên máy của tôi, mật khẩu xuất hiện dưới dạng đối số trần (không có tùy chọn nào). Và bên cạnh đó - tôi thích giữ thông tin đăng nhập khỏi các trình đọc dòng lệnh ( ví dụ: bằng cách sử dụng pshoặc [h]topbằng cách gọi) -U $(cat .username) $(cat .password).
Tomasz Gandor

3

Tôi biết bạn nói rằng bạn không thể mong đợi phần mềm cụ thể được cài đặt, nhưng có các máy khách SSH / SCP / SFTP cho Windows không yêu cầu cài đặt cụ thể nào; chỉ có khả năng thực thi là có sẵn. Một thứ mà tôi tiếp tục hướng đến là PuTTY với các công cụ pscpvà bạn đồng hành của nó psftp, nhưng tôi chắc chắn rằng các lựa chọn thay thế tồn tại. pscppsftpcó thể được điều khiển hoàn toàn từ dòng lệnh, và do đó rất phù hợp cho các nhiệm vụ tự động hóa. Cả hai đều có một -batchcông tắc được mô tả là "vô hiệu hóa tất cả các lời nhắc tương tác" và gần như chắc chắn có thể được tận dụng.

Vì có lẽ bạn đã cài đặt và cấu hình máy chủ SSH / SCP / SFTP trên máy chủ, điều này tránh việc phải cài đặt bất kỳ phần mềm nào trên máy chủ chỉ nhằm mục đích sao chép các tệp đó.

Một nhược điểm khác có thể là PuTTY là nguồn mở theo giấy phép cho phép, vì vậy nếu nó không làm những gì bạn muốn ngay lập tức, thì việc làm cho nó hoạt động theo cách bạn muốn là tương đối dễ dàng.


1
Cảm ơn về giới thiệu của bạn. Tôi sẽ thử pscp và psftp. Chúng cũng là những công cụ tuyệt vời.
Alex

1

Tôi là người CentOS 6dùng nên tôi đã thử phương pháp này trênCentOS 6

Cài đặt samba bằng cách sử dụng

[root @ server ~] # yum cài đặt samba

Truy vấn để xác nhận

[root @ server ~] # rpm -qa samba
samba-3.5.10-125.el6.i686

Tạo một người dùng Samba.

[root @ server ~] # useradd sambashare

Bây giờ tạo mật khẩu samba cho tên người dùng sambashare bằng lệnh smbpasswd.

[root @ máy chủ ~] # smbpasswd -a sambashare
Mật khẩu SMB mới:
Nhập lại mật khẩu SMB mới:
Đã thêm người dùng sambashare.

Tạo một thư mục chia sẻ samba

[root @ máy chủ ~] # mkdir / chia sẻ

thay đổi quyền sở hữu cho thư mục chia sẻ

[root @ server ~] # chown -R sambashare: sambashare / share /

Mở tệp /etc/samba/smb.confvà thêm các dòng dưới đây.

[chia sẻ]
bình luận = Chia sẻ
đường dẫn = / chia sẻ
có thể ghi = có
người dùng hợp lệ = sambashare

Bắt đầu dịch vụ samba

[root @ server ~] # dịch vụ smb khởi động lại
Tắt dịch vụ SMB: [OK]
Bắt đầu dịch vụ SMB: [OK]

Kiểm tra cấu hình của bạn bằng cách sử dụng testparmlệnh

.
.
[chia sẻ]
bình luận = chia sẻ
đường dẫn = / chia sẻ
người dùng hợp lệ = sambashare
chỉ đọc = Không

Trong hệ thống cửa sổ, gõ cái này vào run

nhập mô tả hình ảnh ở đây

Bây giờ nhập tên người dùng và mật khẩu samba

nhập mô tả hình ảnh ở đây

Bạn xong việc rồi

nhập mô tả hình ảnh ở đây


Cảm ơn bạn rất nhiều, tối đa. cho hướng dẫn rất sống động của bạn cho một người mới.
Alex

@Alex bạn được chào đón ... :-)
tối đa
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.