2016-04-07 37 views
0

私はinotify-toolsに基づいた単純なスクリプトを作成しましたが、最終的にはコマンドmount.cifsでNASからマウントされた/ remotepathを監視することにしました。変更を監視するためのリモートパス

私は情報を見つけたので、inotify-toolsはリモートフォルダをサポートしていません。

私はあなたにチャンスを与え、リモートフォルダを見るためのシンプルなツールを使いましたか?何かが変更されると、rsyncが実行されます。

多分私はrsyncだけで新しいファイルとのリモートフォルダを同期する必要がありますか?

ありがとうございます。

私が欲しいものをやっているシンプルなbashスクリプトを作成していましたが、問題と戦っています。もし何かがコピー先のフォルダから削除されてしまったらどうなりますか? この問題を解決するにはどうすればよいですか?

#!/bin/bash 

### Logs path 
path="/var/log/compare" 
log="compare.log" 
listing1="listing1.log" 
listing2="listing2.log" 
### Path which will be monitored 
destination="/path/to/destination/" 
source="/path/to/remote/folder" 


## Watching for content in source folder 
ls -lh $source > $path/$listing1 
### I`m checking if something was changed 
     echo "$(date)" 'INFO' 'I will compare listing files' >> "$path/$log" 
     if cmp -s "$path/$listing1" "$path/$listing2" 
### Files are the same 
     then 
     echo "$(date)" 'INFO' 'Listings are the same' >> "$path/$log" 
### Files are different 
     else 
     rsync -art $source $destination 
     echo "$(date)" 'INFO' 'Finished synchronization' >> "$path/$log" 
fi 
cp $path/$listing1 $path/$listing2 
+0

rdiff-backupについて考えてみましょうか? – jagrok

答えて

0

inotifyは実際には仕事のための間違ったツールです。カーネル内のファイルシステムの活動を傍受して動作するので、リモートアクティビティは完全に見逃されます。

理想的な解決策は、NASボックスでinotifyを実行することです。これは確かにいくつかのデバイスでは可能ですが、あなたはあなたが持っているデバイスを言っていません(あなたがした場合、私はおそらく同じものを持っていないでしょう)。

存在する他のツールは、あなたのスクリプトが行うこととまったく同じように機能します(しかし、おそらくもっときれいです)。その道を追いかける必要はないと思います。

いずれにしても、スクリプトは完全に冗長です。 rsyncを定期的に実行した場合は、まったく同じことが行われます(rsync -tはファイル名、サイズ、タイムスタンプを比較するだけです)。唯一の違いは、rsyncがファイルリストのキャッシュされたコピーではなく、実際のファイルとリモートファイルリストを比較することです。ちなみに、-aは、-r-tの両方を意味するので、rsync -aで十分です。

私が調べることの1つは、NASデバイスでrsyncを直接実行することです。 CIFSを使用してファイルリストにアクセスすることは、ローカルで実行すると効率的ではありません。したがって、NASがrsyncをサポートできる場合は、そのようにします。 (Synology NASボックスにはrsyncがありますが、他のデバイスについてはわかりません)

+0

こんにちは、 ご連絡ありがとうございます。 質問には、Linuxサーバーに接続されたSynologyソリューションを使用しています.Linuxサイトでは、inotifyやrsyncなどのツールに問題はありません。 Synologyの場合、OSが閉鎖され、パッケージが不足しているため、複雑になる可能性があります。 inotifyツールをNAS上で実行できる場合は、はい、Synologyで実行するようにします。 rsyncについて、私は考えていましたが、問題は、Linuxサーバ(宛先)上のファイルを削除し、rsyncがSynologyのソースと同期を取ることです。 – jagrok

+0

私はSynologyを持っていません(NUCで置き換えました)が、 'ipkg'を使ってnlsu2プロジェクトからパッケージをインストールしました。 'apt-get'のように動作します。 – ams

+0

削除されたファイルの置き換えについては、どのように変更をスクリプト化するのか分かりません。起こったときに変わるだけです。いずれにしても、 '--existing'フラグはrsyncに新しいファイルを作成せずに既存のファイルを更新するように指示します。 – ams

関連する問題