คัดลอกไฟล์จาก windows ไปยัง Linux


16

ฉันกำลังเขียนหนึ่งสคริปต์ มันจะเรียกใช้หนึ่งเครื่องลินุกซ์ เป้าหมาย ได้แก่ ลินุกซ์โซลาริสและหน้าต่าง

ฉันรู้ว่าฉันสามารถใช้ scp เพื่อคัดลอกไฟล์ระหว่าง * ระวัง แต่วิธีการเกี่ยวกับการคัดลอกไฟล์จาก windows?

หน้าต่างเหล่านี้เป็นเครื่องทดสอบซึ่งคาดว่าจะไม่สามารถติดตั้งซอฟต์แวร์เฉพาะได้เนื่องจากระบบปฏิบัติการสามารถติดตั้งใหม่ได้บ่อยครั้ง

คำตอบ:


21

ใช้แซมบ้า

Samba ให้บริการแชร์ไฟล์ที่เข้ากันได้กับ Windows

คุณสามารถแบ่งปันไดเรกทอรี (ตัวอย่าง/srv/samba/sharename) บนคอมพิวเตอร์ลินุกซ์และเข้าถึงได้จาก Windows \\linuxservername\sharenameเช่นนี้ของคุณ: ไม่จำเป็นต้องมีซอฟต์แวร์เพิ่มเติมในฝั่ง Windows

Samba รวมอยู่ใน Linux ดิสทริบิวชันส่วนใหญ่แล้ว ติดตั้งโดยใช้ตัวจัดการแพ็กเกจตัวอย่างเช่น:

  • อูบุนตู: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

ในการกำหนดค่า Samba ดู:

หรือค้นหา Google เพื่อค้นหาคำแนะนำสำหรับการแจกจ่ายของคุณ

โปรดทราบว่าคุณอาจต้องกำหนดค่าไฟร์วอลล์ Linux ของคุณในกรณีที่คุณใช้เพื่อยอมรับการเชื่อมต่อกับพอร์ต 137 / tcp, 138 / tcp, 139 / tcp และ 445 / tcp (ดูที่นี่และสิ่งนี้ )


ในคำอธิบายข้างต้นคอมพิวเตอร์ Linux คือเซิร์ฟเวอร์ Samba และ Windows ติดตั้งส่วนแบ่งจากมัน

ในความคิดเห็นของคุณด้านล่างคุณระบุว่าคุณต้องการที่จะทำให้กระบวนการถ่ายโอน นี้สามารถทำได้โดยการกลับบทบาทเพื่อว่า Windows smbclientทำหน้าที่เป็นเซิร์ฟเวอร์และลินุกซ์เชื่อมต่อโดยใช้

ด้วยsmbclientคุณไม่จำเป็นต้องเมานต์แชร์ Windows เลย ตัวอย่างเช่นเพื่อดึงC:\Directory\file.txtและคัดลอกไปยัง/tmpบนคอมพิวเตอร์ Linux ของคุณทำสิ่งนี้:

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

-cคำสั่งเพื่อดำเนินการ ดูman smbclientรายละเอียดที่

-U ชื่อผู้ใช้และรหัสผ่านสำหรับการเข้าถึงการแชร์ที่ระบุว่าเป็น username%password

ปรับเปลี่ยนตามความต้องการของคุณและเพิ่มไปยังสคริปต์ของคุณ


@max ขอบคุณสำหรับคำตอบที่ดีของคุณ ฉันรู้ว่าแซมบ้าสามารถทำงานกับ Windows ได้ แต่มันยังต้องการความเป็นมนุษย์ที่เกี่ยวข้องเมื่อทำการคัดลอกไฟล์ เนื่องจากสคริปต์ของฉันจะทำงานบน linux เดียวและเครื่องได้ติดตั้ง samba ฉันจะให้สคริปต์เดียวทำงานคัดลอกได้อย่างไร ดูเหมือนว่าฉันจะติดดิสก์ Windows กับ Linux ได้ดีกว่าจากนั้นฉันก็สามารถเข้าถึงได้ใน Linux แซมบ้าสามารถทำสิ่งนี้ได้หรือไม่?
Alex

ใช่แซมบ้าสามารถทำได้ ยิ่งไปกว่านั้นคุณไม่จำเป็นต้องเมานต์แชร์ Windows เลย คุณสามารถใช้smbclientเพื่อเชื่อมต่อกับ Windows share, คัดลอกไฟล์และตัดการเชื่อมต่อ ฉันแก้ไขคำตอบแล้วดูสิ
jaume

คุณยินดีฉันดีใจที่ฉันสามารถช่วย
jaume

1
โดยเฉพาะอย่างยิ่ง-cตัวเลือกที่มีมูลค่าการใช้ในกรณีง่าย ๆ ในเครื่องของฉันรหัสผ่านมาเป็นอาร์กิวเมนต์เปล่า (ไม่มีตัวเลือกใด ๆ ) และนอกจากนี้ - ฉันชอบที่จะเก็บข้อมูลประจำตัวออกไปจากผู้อ่าน commandline (ใช้psหรือ[h]topตัวอย่างเช่น) -U $(cat .username) $(cat .password)โดยเรียก
Tomasz Gandor

3

ฉันรู้ว่าคุณบอกว่าคุณไม่สามารถคาดหวังว่าจะติดตั้งซอฟต์แวร์เฉพาะ แต่มีลูกค้า SSH / SCP / SFTP สำหรับ Windows ที่ไม่จำเป็นต้องติดตั้งใด ๆ เฉพาะไฟล์ปฏิบัติการที่พร้อมใช้งาน หนึ่งที่ฉันยังคงหันมาเป็นPuTTYกับเพื่อนpscpและpsftpเครื่องมือของมัน แต่ฉันมั่นใจว่ามีทางเลือกอื่น pscpและpsftpสามารถขับเคลื่อนได้อย่างสมบูรณ์จากบรรทัดคำสั่งและเหมาะสำหรับงานระบบอัตโนมัติ ทั้งคู่มี-batchสวิตช์ที่อธิบายว่า "ปิดใช้งานการแจ้งเตือนแบบโต้ตอบทั้งหมด" และเกือบจะสามารถใช้ประโยชน์ได้อย่างแน่นอน

เนื่องจากคุณมีเซิร์ฟเวอร์ SSH / SCP / SFTP ที่ติดตั้งและกำหนดค่าไว้บนเซิร์ฟเวอร์เรียบร้อยแล้วจึงหลีกเลี่ยงการติดตั้งซอฟต์แวร์ใด ๆ บนโฮสต์ใด ๆ เพื่อวัตถุประสงค์ในการคัดลอกไฟล์เหล่านั้น

ข้อดีอีกอย่างคือความจริงที่ว่า PuTTY เป็นโอเพ่นซอร์สภายใต้ใบอนุญาตที่อนุญาตดังนั้นหากมันไม่ได้ทำในสิ่งที่คุณต้องการโดยตรง


1
ขอบคุณสำหรับคำแนะนำของคุณ ฉันจะลอง pscp และ psftp พวกเขายังเป็นเครื่องมือที่ยอดเยี่ยม
Alex

1

ฉันเป็นCentOS 6ผู้ใช้ดังนั้นฉันจึงลองใช้วิธีนี้CentOS 6

ติดตั้ง samba โดยใช้

[root @ server ~] # yum ติดตั้ง samba

แบบสอบถามเพื่อยืนยัน

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

สร้างผู้ใช้ Samba

[root @ server ~] # useradd sambashare

ตอนนี้สร้างรหัสผ่าน samba สำหรับผู้ใช้ sambashare โดยใช้คำสั่ง smbpasswd

[root @ server ~] # smbpasswd -a sambashare
รหัสผ่าน SMB ใหม่:
พิมพ์รหัสผ่าน SMB ใหม่อีกครั้ง:
เพิ่มผู้ใช้ sambashare

สร้างไดเรกทอรีแชร์แซมบ้า

[root @ server ~] # mkdir / share

เปลี่ยนความเป็นเจ้าของสำหรับโฟลเดอร์แชร์

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

เปิดไฟล์/etc/samba/smb.confและเพิ่มบรรทัดด้านล่าง

[หุ้น]
ความคิดเห็น = แบ่งปัน
path = / share
เขียนได้ = ใช่
ผู้ใช้ที่ถูกต้อง = sambashare

เริ่มบริการแซมบ้า

[root @ server ~] # บริการ smb เริ่มต้นใหม่
การปิดบริการ SMB: [ตกลง]
การเริ่มต้นบริการ SMB: [ตกลง]

ตรวจสอบการกำหนดค่าของคุณโดยใช้testparmคำสั่ง

.
.
[หุ้น]
comment = share
path = / share
ผู้ใช้ที่ถูกต้อง = sambashare
อ่านอย่างเดียว = ไม่

ในระบบ windows พิมพ์สิ่งนี้ใน run

ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ป้อนชื่อผู้ใช้และรหัสผ่านของแซมบ้า

ป้อนคำอธิบายรูปภาพที่นี่

คุณทำเสร็จแล้ว

ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณมากสูงสุด สำหรับการกวดวิชาที่สดใสมากสำหรับมือใหม่
Alex

@Alex คุณยินดี ... :-)
สูงสุด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.