- ベストアンサー
新規のファイルがあればネットワークドライブにコピー
以下のような仕掛けをWindows10でしたいのですが、お知恵をいただきたく思っています。 パソコンのC:\SOURCE フォルダにファイルが増えると、それをトリガーにNAS(N:\TARGET)にコピーしたい。 NASはドライブ割り当て済みの既存のもの。 C:\SOURCE にはもともと複数のファイルが入っているが、新規に増えたファイルだけをN:\TARGETの下にコピーしたい。 増えるファイルの名前は予測できないので、ワールドカードを使うしかない。 タスクマネージャー? スクリプト? あたりでしょうか?方法は問いませんが、できるだけ簡単な仕掛けで。 タスクマネージャーでCOPY C:\SOURCE\*.* N:\TARGET を数分間隔で起動するというような類は避けたい。 C:\SOURCEに昔からあるファイルも上書きコピーされてしまうし、そもそも何も新規のファイルが無くても起動させるのはログが大量にたまるし無駄な動きが多くなる。 確かROBOCOPYとかに差分だけコピーというオプションがあったような気がしますが、あまり詳しくないです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.5です。 > 問題はそのトリガーなんです。 一例として FileSystemWatcherを使います。 Visual Studio C# にはFileSystemWatcherコンポーネントが用意されています。 FileSystemWatcherの発生イベントを判定してrobocopyを実行すればいいです。 Web検索すればFileSystemWatcherの使用例を参照できます。 マイクロソフト サイト FileSystemWatcher クラス https://learn.microsoft.com/ja-jp/dotnet/api/system.io.filesystemwatcher?view=net-7.0
その他の回答 (6)
- superside0
- ベストアンサー率64% (461/711)
NASを自分のバックアップ先として使いたいだけなの 定期的にNASにバックアップ(ミラー)するだけでよいのか それとも、ローカルのファイル更新すると リアルタイムにNASに反映されて、 さらに別の端末からNAS上のファイルを書き換えられたら それがローカルに反映させたいか(NASとローカルを同期させたいか) によって使うソフトも変わってくるしょう。 前者ならバックアップソフトを使えばよい。 (差分対応のソフトをすれば転送効率も良いでしょう) 後者なら、NASとの同期してくれるソフトを探せばよいのでは思います。 (クラウドストレージのDropboxとかOneDriveみたいな やつだけど、クラウドでなくNASに対応している常駐ソフト)
- kteds
- ベストアンサー率42% (1882/4440)
robocopyを /mir オプション付きで実行すればいいでしょう。 robocopy C:\SOURCE N:\TARGET /mir 追加オプションはrobocopyヘルプ参照。 起動するトリガーは自分で考えてください。
お礼
ありがとうございます。問題はそのトリガーなんです。 C:\SOURCEに何か変化があったらそれを起動したいのですが、普通何を使うのでしょうか。
- bardfish
- ベストアンサー率28% (5029/17766)
DOSプロンプト用コマンドに XCOPY と言うモノがあります。 XCOPYのオプションには「ソースとターゲットの更新日時を比較して新しいモノだけをコピーする」というオプションがあります。 cmd.exeを起動して「xcopy /?」とタイプして使用できるオプションの説明を読んで適切に使用してください。 よく利用してました。 今でも利用していたりします。
- redslove10
- ベストアンサー率41% (397/968)
AOMEI Backupperを使ってみては? https://www.ubackup.com/jp/features/file-sync.html
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>それを次の作業としてNASにコピーする流れで動いている あ~なるほどね。 エンジニアの世界では、デグレっていいますね。 Aさんダウンロードして作業開始 Bさんダウンロードして作業開始 Bさん作業を完了してアップロード Aさん作業を完了してアップロード 結果、Bさんが作業した結果が、失われる。 非常に無駄でしかない流れ^^を採用してるんですね^^ 質問者さんは、この馬鹿な流れがおかしいことを 理解してるようなので、大丈夫みたいですが、 その「上の方」は、これが時代的にいかに化石的な 考え方かをまだ理解してないようですね。 んま~そうしろっていう、指示なら従うしかない とっても、愚かな会社?さんなんでしょうね。 が、それが指示なら従うしかないですからね~ ってことで、質問者さんは、それらが間違っていて どうすれば適切だったか?を理解し続けることで あなた自身を向上させられますし、人生にとってプラスに なると思いますので!ファイトっす!
- AsarKingChang
- ベストアンサー率46% (3467/7474)
あまりお勧めできない方法ですが。 NAS(N:\TARGET)をWindows側に マウントしてしまう手はありますよ。 (というか、この場合、ファイルが増えたというより、 最初からそこに書いてますが) 相手側のNASなりがrsyncに対応していればそれが一番 効率がいいんですがね。 差分だけを送り出せるソフトなので、無駄がなく、 すぐ終わるメリットはあります。 Win->Linuxなどの場合はよく使います。 んま、更新なし設定のFTPでもある程度同じことはできますが。 双方のディレクトリリストを送りあってしまう分、ロスは 大きいですね。 私の方では、全く別の概念ですが。 Gitにしています。 あるフォルダをGitリポジトリとすれば、 追加編集削除したものがあれば、変更リストに加えられるので、 それをサーバー側に反映されるなら、コミット&プッシュ 逆に、追加編集削除されているが「元に戻す」事もできるので エンジニア系の人はほぼ必須のツールでして。 ただ、NasでGit対応は聞いたことはないので。 そこは問題ですが、 余ってるPCにLinuxを入れて、それにGitやSMBを入れれば、 Nas以上の事ができることも確かですよ。 また、それ自体がPCなので、仕事もできますし! 例えば、スクレイピングとして、URLを入れれば そのサイトをひたすら巡回して吸い上げてくれるとか、 メインPCを停止中も、何らかのダウンロードをしてくれるなど。 Nasは、記録だけですが、PCベースでは「仕事」を してくれるので、ありですね!。 やや斜め意見もあるので、そうじゃない感が多数あるでしょうが。 他の人はこうしている!という意見程度に みていただけたらと思っての回答投稿になります。
お礼
ありがとうございます。こちらの環境の場合、NASそのものの機能を使うことは許されず、かついったんそのパソコンのローカルにデータが増える作りで、それを次の作業としてNASにコピーする流れで動いているため、どれも採用が難しいです。でも、ご意見ありがとうございます。
お礼
結局、これが変な追加ソフトも入れずにできる、MS純正の方法での最善策に思えます。 問題なのは、私はVBのスキルはゼロなのですが、どうすればこのFileSystemWatcherを常駐できるのでしょうか? 最後に教えてください。