salin file dari windows ke Linux

16

Saya sedang menulis satu skrip. itu akan menjalankan satu mesin linux. targetnya termasuk linux, solaris dan windows.

Saya tahu saya bisa menggunakan scp untuk menyalin file antara * nix. tetapi bagaimana dengan menyalin file dari windows?

Jendela-jendela ini adalah mesin uji, yang tidak dapat diharapkan untuk menginstal perangkat lunak tertentu, karena OS dapat sering diinstal ulang.

Alex
sumber

Jawaban:

21

Gunakan Samba .

Samba menyediakan layanan berbagi file yang kompatibel dengan Windows.

Anda dapat berbagi direktori (misalnya /srv/samba/sharename) pada komputer Linux Anda dan mengaksesnya dari Windows seperti ini: \\linuxservername\sharename. Tidak memerlukan perangkat lunak tambahan di sisi Windows.

Samba termasuk dalam sebagian besar distribusi Linux. Instal menggunakan pengelola paket, misalnya:

  • Ubuntu: sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS / RedHat: yum install samba

Untuk mengkonfigurasi Samba, lihat:

atau cari Google untuk menemukan panduan untuk distribusi Anda.

Perhatikan bahwa Anda mungkin perlu mengkonfigurasi firewall Linux Anda, jika Anda menggunakannya, untuk menerima koneksi ke port 137 / tcp, 138 / tcp, 139 / tcp dan 445 / tcp (lihat ini dan ini ).


Dalam uraian di atas, komputer Linux adalah server Samba dan Windows memasang bagian darinya.

Dalam komentar Anda di bawah ini, Anda menyebutkan bahwa Anda ingin mengotomatiskan proses transfer . Ini dapat dicapai dengan membalikkan peran sehingga Windows bertindak sebagai server dan Linux terhubung menggunakan itu smbclient.

Dengan smbclientAnda tidak perlu me-mount berbagi Windows sama sekali. Misalnya, untuk mengambil C:\Directory\file.txtdan menyalinnya ke /tmpkomputer Linux Anda lakukan ini:

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

-cPerintah untuk dieksekusi. Lihat man smbclientdetailnya.

-U Nama pengguna dan kata sandi untuk mengakses bagian yang ditentukan username%password

Ubah sesuai kebutuhan dan tambahkan ke skrip Anda.

Jaume
sumber
@ Max, Terima kasih atas jawaban Anda yang luar biasa. Saya tahu samba dapat bekerja dengan Windows. Tapi itu masih membutuhkan keterlibatan manusia saat menyalin file. Karena skrip saya akan berjalan pada satu linux dan mesin telah menginstal samba, bagaimana saya bisa membiarkan satu skrip melakukan pekerjaan penyalinan? Sepertinya saya lebih baik me-mount disk Windows ke Linux, maka saya dapat mengaksesnya di Linux. Bisakah samba melakukan ini?
Alex
Ya, Samba dapat melakukan ini. Lebih baik lagi, Anda tidak perlu me-mount share Windows sama sekali. Anda dapat menggunakan smbclientuntuk menghubungkan ke berbagi Windows, menyalin file dan memutuskan sambungan. Saya mengedit jawaban saya, melihatnya.
jaume
Sama-sama, saya senang bisa membantu.
jaume
1
Terutama -copsi ini layak digunakan dalam kasus-kasus sederhana. Di komputer saya, kata sandi muncul sebagai argumen kosong (tanpa opsi apa pun). Dan selain itu - saya lebih memilih untuk menjaga kredensial dari pembaca baris perintah (menggunakan psatau [h]top, misalnya), dengan menelepon -U $(cat .username) $(cat .password).
Tomasz Gandor
3

Saya tahu Anda mengatakan Anda tidak dapat mengharapkan perangkat lunak tertentu diinstal, tetapi ada klien SSH / SCP / SFTP untuk Windows yang tidak memerlukan instalasi khusus; hanya executable yang tersedia. Salah satu yang saya terus beralih adalah Putty dengan pendamping pscpdan psftpalat - alatnya, tetapi saya yakin bahwa ada alternatif. pscpdan psftpdapat digerakkan sepenuhnya dari baris perintah, dan karenanya cocok untuk tugas otomasi. Keduanya bahkan memiliki -batchsaklar yang digambarkan sebagai "nonaktifkan semua permintaan interaktif" dan hampir dapat dipungkiri.

Karena Anda mungkin sudah memiliki server SSH / SCP / SFTP yang diinstal dan dikonfigurasikan di server, ini menghindari keharusan menginstal perangkat lunak apa pun pada host mana pun hanya untuk tujuan menyalin file-file itu.

Sisi positif lainnya mungkin fakta bahwa Putty adalah open source di bawah lisensi permisif, jadi jika itu tidak melakukan apa yang Anda inginkan langsung dari kotak, itu harus relatif mudah untuk membuatnya bertindak seperti yang Anda inginkan.

sebuah CVn
sumber
1
Terima kasih atas rekomendasi Anda. Saya akan mencoba pscp dan psftp. Mereka juga merupakan alat yang hebat.
Alex
1

Saya CentOS 6Pengguna jadi saya mencoba metode iniCentOS 6

Instal samba menggunakan

[root @ server ~] # yum instal samba

Permintaan konfirmasi

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

Buat Pengguna Samba.

[root @ server ~] # useradd sambashare

Sekarang buat kata sandi samba untuk nama pengguna sambashare menggunakan perintah smbpasswd.

[root @ server ~] # smbpasswd -a sambashare
Kata sandi SMB baru:
Ketik ulang kata sandi SMB baru:
Menambahkan sambashare pengguna.

Buat direktori berbagi samba

[root @ server ~] # mkdir / bagikan

ubah kepemilikan untuk folder berbagi

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

Buka file /etc/samba/smb.confdan tambahkan baris di bawah ini.

[Bagikan]
komentar = Bagikan
path = / bagikan
dapat ditulisi = ya
pengguna yang valid = sambashare

Mulai layanan samba

[root @ server ~] # service smb restart
Mematikan layanan SMB: [Oke]
Memulai layanan SMB: [Oke]

Periksa konfigurasi Anda dengan menggunakan testparmperintah

.
.
[Bagikan]
komentar = bagikan
path = / bagikan
pengguna yang valid = sambashare
baca saja = Tidak

Di sistem windows ketik ini run

masukkan deskripsi gambar di sini

Sekarang masukkan nama pengguna dan kata sandi samba

masukkan deskripsi gambar di sini

Kamu selesai

masukkan deskripsi gambar di sini

maks
sumber
Terima kasih banyak, maks. untuk tutorial yang sangat jelas untuk pemula.
Alex
@Alex Anda dipersilakan ... :-)
maks