Скопіюйте файл з Windows в Linux


16

Я пишу один сценарій. він запустить одну машину Linux. його цілі включають linux, solaris та windows.

Я знаю, що я можу використовувати scp для копіювання файлів між * nix. а як щодо копіювання файлу з Windows?

Ці вікна - тестові машини, на яких не можна очікувати встановлення конкретного програмного забезпечення, оскільки ОС можна часто перевстановлювати.

Відповіді:


21

Використовуйте Samba .

Samba надає послугу обміну файлами, сумісну з Windows.

Ви можете поділитися каталогу (наприклад /srv/samba/sharename) на вашому Linux комп'ютер і отримати доступ до нього з Windows , як це: \\linuxservername\sharename. На стороні Windows йому не потрібне додаткове програмне забезпечення.

Samba включений у більшість дистрибутивів Linux. Встановіть його за допомогою менеджера пакунків, наприклад:

  • Ubuntu: sudo apt-get install samba smbclient

  • ВИПУСК: zypper samba

  • CentOS / RedHat: yum install samba

Щоб налаштувати Samba, див.

або пошукайте в Google, щоб знайти путівник по розповсюдженню.

Зауважте, що вам може знадобитися налаштувати брандмауер Linux, якщо ви його використовуєте, щоб прийняти з'єднання з портами 137 / tcp, 138 / tcp, 139 / tcp та 445 / tcp (див. Це та це ).


В описі вище комп'ютер Linux є сервером Samba і Windows монтує частку з нього.

У своєму коментарі нижче ви згадуєте, що хочете автоматизувати процес передачі . Цього можна досягти, змінивши ролі, щоб Windows виступала як сервер, а Linux підключався до нього за допомогою 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 і машина встановила самбу, як я можу дозволити одному сценарію виконувати роботу з копіювання? Здається, що мені краще встановити диск Windows на Linux, тоді я можу отримати доступ до нього в Linux. Чи може це зробити самба?
Алекс

Так, Самба може це зробити. Ще краще, вам взагалі не потрібно монтувати спільний доступ до Windows. Ви можете використовувати smbclientдля підключення до спільного доступу до Windows, копіювання файлу та відключення. Я відредагував свою відповідь, погляньте на неї.
jaume

Ви раді, я рада, що можу допомогти.
jaume

1
Особливо -cваріант варто використовувати в простих випадках. На моїй машині пароль подається як голий аргумент (без жодної опції). І крім того - я вважаю за краще тримати дані від читачів командного рядка (використовуючи psабо [h]top, наприклад), зателефонувавши -U $(cat .username) $(cat .password).
Томаш Гандор

3

Я знаю, ви сказали, що не можете очікувати встановлення конкретного програмного забезпечення, але є клієнти SSH / SCP / SFTP для Windows, які не потребують конкретної установки; доступний лише виконуваний файл. Я завжди продовжую звертатися до PuTTY із супутником pscpта psftpінструментами, але я впевнений, що існують альтернативи. pscpі psftpїх можна повністю запустити з командного рядка, і тому вони добре підходять для завдань з автоматизації. Обидва вони навіть мають -batchперемикач, який описується як "відключити всі інтерактивні підказки" і майже напевно може бути використаний.

Оскільки, напевно, у вас вже встановлений і налаштований на сервері SSH / SCP / SFTP-сервер, це дозволяє уникнути необхідності встановлення будь-якого програмного забезпечення на будь-якому хості лише для копіювання цих файлів.

Іншим переломним моментом може бути той факт, що PuTTY є відкритим кодом з дозволеною ліцензією, тому якщо він не робить те, що ви хочете, прямо з коробки, це має бути відносно легко змусити його діяти так, як вам зручніше.


1
Дякую за рекомендацію. Я спробую pscp та psftp. Вони також чудові інструменти.
Алекс

1

Я CentOS 6Користувач, тому я спробував цей методCentOS 6

Встановіть самбу за допомогою

[root @ server ~] # yum встановити samba

Запит на підтвердження

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

Створіть користувача Samba.

[root @ server ~] # useradd sambashare

Тепер створіть пароль samba для імені користувача sambashare за допомогою команди smbpasswd.

[root @ server ~] # smbpasswd - самбашер
Новий пароль SMB:
Знову введіть новий пароль SMB:
Додано користувача sambashare.

Створіть каталог обміну самбою

[root @ server ~] # mkdir / спільний доступ

змінити право власності на папку спільного доступу

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

Відкрийте файл /etc/samba/smb.confі додайте рядки нижче.

[поділитися]
коментар = Поділитися
шлях = / поділитися
записаний = так
дійсні користувачі = sambashare

Запустіть службу самби

[root @ server ~] перезапуск сервера # SMB
Вимкнення сервісів SMB: [OK]
Запуск сервісів SMB: [OK]

Перевірте конфігурацію за допомогою testparmкоманди

.
.
[поділитися]
коментар = поділитися
шлях = / поділитися
дійсні користувачі = sambashare
тільки для читання = Ні

У системі Windows введіть це run

введіть тут опис зображення

Тепер введіть ім'я користувача та пароль samba

введіть тут опис зображення

Ви закінчили

введіть тут опис зображення


Дуже дякую, макс. за ваш дуже яскравий підручник для новачків.
Олексій

@ Алекс вас вітає ... :-)
макс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.