GNU/Linux >> Linux の 問題 >  >> Linux

WinSCPを使用してLinuxとWindows間のファイル転送を自動化するバッチスクリプトを作成する

質問 cronを実行しています Linuxサーバーで1日に1回私のWebサイトのバックアップを取ります。ただし、これらのバックアップを1週間に1回程度、ローカルマシン(Windows)にダウンロードします。 LinuxからWindowsへのファイル転送を自動化することは可能ですか?

回答:

はい、できます。 WinSCPのスクリプトおよび自動化機能をご覧ください。

このチュートリアルでは、WinSCPを使用してLinuxとWindows間のファイル転送を自動化するバッチスクリプトを作成し、Windowsのタスクスケジューラを使用してスクリプトをスケジュールする方法を説明します。

前提条件:SSHサーバーはLinuxマシンで実行されており、ローカルマシンはWindows10であると想定しています。

LinuxからWindowsへのファイル転送を自動化するバッチスクリプトの作成

バッチスクリプトを書くと言いましたか?実際には意味がありませんでした。代わりに、WinSCPを使用してバッチスクリプトを生成します。

ステップ1 :WinSCPアプリケーションを起動します。

ステップ2 :まず、WinSCPのバージョンを確認してください

ステップ3 :古いバージョンのWinSCPを使用している場合は、最新バージョンをダウンロードしてインストールする必要があります。

ステップ4 :最新バージョンをインストールした後、WinSCPを起動します。

ステップ5 :IPアドレス、ユーザー名、パスワードなどの必要な詳細を入力して、Linuxマシン(リモート)にログインします。

ステップ6 :ログインに成功したら、セッション>セッションURL/コードの生成をクリックします。 メニューから。

ステップ7 :「セッションURL/コードの生成 」ダイアログで、「パスワード」を探します 」チェックボックス。無効になっている場合は、ファイル転送を自動化するために有効にする必要があります。そのためには、必要なユーザー名とパスワードを使用してセッションを保存する必要があります。

注意:パスワードを保存することはお勧めしませんが、ファイルを自動的にログインして転送する場合は、パスワードを保存する必要があります。

ステップ8 :「スクリプト」を選択します 」タブをクリックし、「バッチファイル」を選択します 形式 フィールド。

ステップ9 :[クリップボードにコピー]をクリックします 」ボタンを押して、コードをメモ帳に貼り付けます。

ステップ10 :「コマンド1」の行を変更します 」と「あなたのコマンド2 「。コマンドはget、put、またはsynchronizeにすることができます

たとえば、ファイルをリモートディレクトリに配置/アップロードする場合、コマンドは次のようになります。

プット構文:

put <file> [ [ <file2> ... ] <directory>/[ <newname> ] ]

コマンドの例を入力してください:

put file.html
put d:\www\file.html

コマンドの例を取得する:

get file.html d:\www\

リモートマシンとローカルマシンの間でフォルダを同期する場合は、ローカル/リモート/両方の同期を使用する必要があります。 コマンド。以下のスクリプトはそれを示しています。

@echo off
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="E:\Backup\WinSCP.log" /ini=nul ^
/command ^
"open sftp://username:[email protected]/ -hostkey=""ssh-rsa 2048 leave_the_key"" -rawsettings Cipher=""aes,blowfish,3des,chacha20,WARN,arcfour,des"" KEX=""ecdh,dh-gex-sha1,dh-group14-sha1,dh-group1-sha1,rsa,WARN""" ^
"synchronize local E:\Backup /home/domain/backup" ^
"exit"
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)
exit /b %WINSCP_RESULT

上記のスクリプトでは、ローカル同期を使用しました リモートマシンとローカルマシン間でファイルを同期します。つまり、リモートディレクトリの変更はローカルディレクトリに適用されます。

:にんじん(^) 長いコマンドを分割するために使用されます。

または、

を使用することもできます
  • リモート同期 –ローカルディレクトリからの変更はリモートディレクトリに適用されます。
  • 両方を同期する –リモートディレクトリとローカルディレクトリの両方を変更します。

ステップ11 :スクリプトを .batとして保存します (バッチ)ファイル。

ステップ12 :バッチファイルをダブルクリックして、スクリプトをテストします。ファイル転送のステータスを示すコマンドウィンドウが表示されます。

Windowsタスクスケジューラでタスクを作成する

最後に、Windowsタスクスケジューラを使用してバッチスクリプトをスケジュールします。おそらく、毎日または毎週月曜日の午前3時にバックアップをスケジュールする必要があります。

ステップ1 :タスクスケジューラプログラムを起動する

ステップ2 :メニューから[アクション>タスクの作成]をクリックします

ステップ3 :タスクの名前、トリガー、アクション、および条件を次のように設定します:

ステップ4 :タスクが正しく作成されているかどうかを確認します。これを行うには、左側のパネルから[タスクスケジューラライブラリ]ノードをクリックし、中央のパネルにタスクのリストを表示する必要があります。

ステップ5 :スクリプトをテストするには、タスクを右クリックして[実行]を選択します。 「。

タスクのバックアップを取りたい場合は、タスクを右クリックしてエクスポートを選択します。 。


Linux
  1. ncおよびpvコマンドを使用して2台のコンピューター間でファイルを転送する方法

  2. Linux 待ち行列システム

  3. Linux ファイル システムを使用した Write Once, Read Many (WORM)

  1. Szyszka – Linux、Windows、Mac用の新しい高速バッチファイルリネーム

  2. LinuxとWindows間でSAMBAサーバーを構成してファイルを転送する方法

  3. SCPとFTPを使用してLinuxのサーバー間でファイルを転送する方法

  1. SCP Linuxコマンド–リモートからローカルへのSSHファイル転送方法

  2. Linux から Windows DLL を使用する

  3. LinuxでCでファイルを書く方法は?