web-dev-qa-db-ja.com

夜間のスケジュールとしてWindowsからUnixにファイルを送信する

たとえば、Windowsサーバー上に次のような共通のディレクトリがあるとします。\\servername\location\common。日中は、どのユーザーもそのWindowsディレクトリにファイルを追加/削除できます。

そのディレクトリ内のすべてのファイルを事前定義されたパス(変更されない)でUnixサーバーに転送するために、夜間のスケジュール(常に午後9時)をどのように設定しますか?

誰もが知っているように、私はパスワードを隠すことについてあまり心配していません。

  • これを行うためのよく知られたスクリプトはありますか?
  • そうでない場合、これを実装する方法について誰かがヒントを持っていますか?

.batファイルとシェルについてある程度の知識があります。

1
toop

「AlwaySync」のようなフリーソフトウェアを使用して、SFTP/SSH経由でファイルを送信します。または、リモートシステムにISCSI/SMB共有を設定し、その方法でバックアップします。または、Cygwinをインストールし、cronでLinuxサーバーにバックアップするようにrsyncを設定します。

これらはあなたの脳液を流すための単なる概念です!

3
Ben Poulson

これは、WindowsタスクとWinSCPを使用して実行できます。

まず、WinSCPに移動してインストールします http://winscp.net/eng/index.php インストールしたら、[新規]をクリックして、サーバーの情報を入力します。キーを使用している場合は、キーファイルを見つけます。それ以外の場合は、パスワードを入力します。 [保存]をクリックします。表示されるダイアログで、キーファイルを使用していない場合は必ず[パスワードを保存]をオンにしてください。選択したプロファイル名を覚えておいてください。

次に、WinSCPをファイルにインストールしたのと同じ場所にconfig.txtというファイルを作成し、**を特定のものに置き換えて次のように挿入します。

option batch on
option confirm off
open *NAME OF PROFILE* synchronize local -mirror *Local path: \\servername\location\common* *Remote Path*
exit

Windows Key + Rを押します

次に、taskschd.msc /sと入力して[OK]をクリックします。開いたウィンドウの右側で、Create Task...を選択します。名前を入力します:Folder Auto Upload(またはあなたに合ったもの)

Triggersタブをクリックし、次にNewをクリックします。Dailyラジオボタンを選択します。時間が表示されます。アップロードを実行する時刻に調整してください。 OKをクリックします

[プログラム/スクリプト]フィールドで[Actions]タブをクリックします。[プログラム/スクリプト]フィールドでNewをクリックし、[引数の追加](オプション)にWinSCP.exeの場所を入力します(またはインストールした場所を参照して選択します)。 ):フィールドに/console /script=config.txtと入力し、OKをクリックします。もう一度OKをクリックすると、すべて設定されます。

3
ntw1103

PuTTYをインストールし、スケジュールタスクでpscpを使用できます。セキュリティが優先されなかった場合は、Windowsに組み込まれているftpクライアントでも同じことができます。

私の場合、 nixツールのgowディストリビューション のPuTTYとpscpを使用します。

ディレクトリ全体の基本的なファイル転送は、「pscp -pw password -r "path/to/source /" [email protected]:/ path/to/destination /」のようになります。このアプローチにはいくつかの問題があります。 、パスワードをプレーンテキストにするなど

Pagentを使用する方が良いアプローチです--- 設定する必要があります そして-pwpasswordを-agentに置き換えてください。

IIRCは、rsyncルートを使用したい場合 deltacopy が適切なオプションである可能性があり、スケジュールされた増分バックアップを実行します。

2
Journeyman Geek

私の意見では、rsyncが唯一の方法です-あなたが求めているのは、あるファイルシステム上のディレクトリを別のファイルシステムに同期することであり、これを最も信頼できる方法で行うためのツールはrsyncです。これをさらに正当化するために、rsyncプロジェクトの歴史を見るのは良いことだと思います-それは1996年に作成され、継続的に開発され、unixコミュニティ全体で広く使用されています。最後のリリースは2008年でした。つまり、過去4年間、2つのディレクトリを同期するというほぼ完璧な仕事をしていると考えられてきました。したがって、問題はこれをどのように設定するかです。

私はこれが非常に一般的なことであるに違いないと考えました。グーグルですばやく検索し、スタックオーバーフローに関する非常に優れた投稿を発見しました- rsyncを使用したsamba共有のbashバックアップスクリプト 。必要な手順(以下で概説します)をすでに念頭に置いていましたが、スクリプトは、ログファイル、複数の共有、マウントされていないファイルシステムのマウントなどを作成することで、さらに上を行きます。それは本当に素晴らしいスクリプトです。あなたがする必要があるのは、Windows共有のディレクトリ/ IPアドレスとファイルとログの宛先を含むようにそれを変更することです。

あとは、スクリプトを午後9時に実行するようにスケジュールするだけです。これは、cronまたはcrontabを使用して実行できます-読む cronまたはcrontabチュートリアル これを行う方法がわからない場合。

1
James

SMBで利用できるものがあるので、Unix側から処理します。つまり、どちらかを使用して転送を行うcronジョブ(おそらくroot以外のユーザーアカウントを使用)を設定します

  • rsnapshot-これは優れたバックアップユーティリティです(cronの設定方法に関する説明が付属しています)
  • rsync-問題がバックアップではなくファイル同期である場合。
1

テキスト/スクリプトファイルの場合は、SVN、GIT、Mercurialなどのバージョン管理システムを使用します。このようにして、サーバーに負荷がかかりすぎず(ファイル間の違いのみが保持されます)、各同期操作の違いを簡単に確認でき、誰がいつどのファイルを変更したか、何が変更されたかを知ることもできます。各同期操作にコメントを追加することもできます。これは間違いなく非常に便利です。

1
m0skit0

Windowsでフォルダとファイルを共有できます。 LinuxにSambaをインストールし、フォルダーをマウントし、Linuxでcronジョブを実行して、必要な場所にファイルを転送します。

1
Anagio