BAT-скрипт для копирования файлов из Windows в удаленные системы Linux

#windows #batch-file #winscp

#Windows #пакетный файл #winscp

Вопрос:

Можно ли как-нибудь скопировать файлы с компьютера Windows на удаленный компьютер Linux с помощью команды DOS / другого средства командной строки (указав имя пользователя и пароль в команде). Обычно я делаю это с помощью WinSCP и хотел бы написать скрипт (BAT) для автоматизации этого.

Комментарии:

1. WinSCP можно запускать из скриптов.

Ответ №1:

Вы могли бы использовать версию PuTTY из командной строки, pscp.exe.

Комментарии:

1. Технически pscp.exe это не версия PuTTY для командной строки, а только компонент безопасного копирования. plink.exe является дополнением командной строки к PuTTY, хотя он предназначен для удаленных команд без запуска командной оболочки.

Ответ №2:

Сценарий командной строки WinSCP для загрузки файла похож:

 winscp.com /command "open sftp://username@example.com/" "put d:wwwindex.html" "exit"
  

Смотрите руководство по написанию сценариев WinSCP.


Проще использовать функцию Generate transfer code, чтобы заставить WinSCP GUI генерировать скрипт (или даже полный пакетный файл) для передачи.

Диалоговое окно сгенерировать код переноса

Комментарии:

1. Ty, для обновления функции генерации передачи. На самом деле я планировал начать с этого, но не был уверен, существует ли он 🙂

Ответ №3:

Загрузите копию pscp.exe (дополнение PuTTY scp). Если у вас есть установочные SSH-ключи на сервере Linux, что вы можете сделать с помощью PuTTY в Windows, вы можете настроить копирование без пароля на компьютеры Linux из Windows.

Ответ №4:

Установите cygwin, и вы сможете использовать scp, ssh и т.д. Точно так же, как вы бы использовали Linux. Кроме того, вы можете использовать обычные bash-скрипты вместо дерьмовых bat-файлов.

Ответ №5:

Если кто-то хочет сделать это в 2022 году, Windows 10 теперь поставляется с scp. Вы можете сделать

scp path/localfile.txt remote-user@host:/home/path

или рекурсивная версия для каталогов

локальная папка scp -r remote-user@host:/home/path

Конечно, с scp вы столкнетесь с проблемами, если у вас большое количество файлов. Он копирует все, в отличие от только измененных / новых файлов.

Тогда вам понадобится такой инструмент, как rsync, который доступен через WSL (подсистема Windows Linux).

rsync -r localfolder remote-user@host:/home/path

(Лично я не решаюсь устанавливать новые инструменты для работы, отсюда и мое желание придерживаться того, что уже доступно)