たとえば、Windowsサーバー上に次のような共通のディレクトリがあるとします。\\servername\location\common
。日中は、どのユーザーもそのWindowsディレクトリにファイルを追加/削除できます。
そのディレクトリ内のすべてのファイルを事前定義されたパス(変更されない)でUnixサーバーに転送するために、夜間のスケジュール(常に午後9時)をどのように設定しますか?
誰もが知っているように、私はパスワードを隠すことについてあまり心配していません。
.batファイルとシェルについてある程度の知識があります。
「AlwaySync」のようなフリーソフトウェアを使用して、SFTP/SSH経由でファイルを送信します。または、リモートシステムにISCSI/SMB共有を設定し、その方法でバックアップします。または、Cygwinをインストールし、cronでLinuxサーバーにバックアップするようにrsyncを設定します。
これらはあなたの脳液を流すための単なる概念です!
これは、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
をクリックすると、すべて設定されます。
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 が適切なオプションである可能性があり、スケジュールされた増分バックアップを実行します。
私の意見では、rsyncが唯一の方法です-あなたが求めているのは、あるファイルシステム上のディレクトリを別のファイルシステムに同期することであり、これを最も信頼できる方法で行うためのツールはrsyncです。これをさらに正当化するために、rsyncプロジェクトの歴史を見るのは良いことだと思います-それは1996年に作成され、継続的に開発され、unixコミュニティ全体で広く使用されています。最後のリリースは2008年でした。つまり、過去4年間、2つのディレクトリを同期するというほぼ完璧な仕事をしていると考えられてきました。したがって、問題はこれをどのように設定するかです。
私はこれが非常に一般的なことであるに違いないと考えました。グーグルですばやく検索し、スタックオーバーフローに関する非常に優れた投稿を発見しました- rsyncを使用したsamba共有のbashバックアップスクリプト 。必要な手順(以下で概説します)をすでに念頭に置いていましたが、スクリプトは、ログファイル、複数の共有、マウントされていないファイルシステムのマウントなどを作成することで、さらに上を行きます。それは本当に素晴らしいスクリプトです。あなたがする必要があるのは、Windows共有のディレクトリ/ IPアドレスとファイルとログの宛先を含むようにそれを変更することです。
あとは、スクリプトを午後9時に実行するようにスケジュールするだけです。これは、cronまたはcrontabを使用して実行できます-読む cronまたはcrontabチュートリアル これを行う方法がわからない場合。
SMBで利用できるものがあるので、Unix側から処理します。つまり、どちらかを使用して転送を行うcronジョブ(おそらくroot以外のユーザーアカウントを使用)を設定します
テキスト/スクリプトファイルの場合は、SVN、GIT、Mercurialなどのバージョン管理システムを使用します。このようにして、サーバーに負荷がかかりすぎず(ファイル間の違いのみが保持されます)、各同期操作の違いを簡単に確認でき、誰がいつどのファイルを変更したか、何が変更されたかを知ることもできます。各同期操作にコメントを追加することもできます。これは間違いなく非常に便利です。
Windowsでフォルダとファイルを共有できます。 LinuxにSambaをインストールし、フォルダーをマウントし、Linuxでcronジョブを実行して、必要な場所にファイルを転送します。