接続されたUSB大容量記憶装置と自動的に同期するには?

接続されたUSB大容量記憶装置と自動的に同期するには?

私は(現在)3つのモバイルUSB大容量記憶装置(フラッシュドライブ、携帯電話、eリーダー)を持っています。私のすべての文書(履歴書、パスポート、研究論文、ソースコードなど)の最新バージョンを常に持っていると思います。

私のファイルは頻繁に変更されるため、毎日手動でコピーすることは不可能です。理想的には、フラッシュドライブ(たとえば)を接続し、コンピュータが自動的にそれを認識、マウント、同期、および削除するようにしたいと思います。

次の機能は「素晴らしいでしょう」:

  • GUI
  • 同期が開始/停止されたときにXorg / KDE / Gnomeを介して通知されます。
  • そして、双方向同期も可能です。しかし、これは優先順位ではありません。

これに関連するいくつかの質問を見つけました。

しかし、それらのどれも私の質問に完全に答えることはできませんでした。十分な時間があれば、udev自分自身を使って何かを組み立てることができると思いました。rsyncしかし、私は車輪を再発明したくありません。そして今は無駄にする必要がない時間だ。理想的には、既存のソリューションを使用したいが見つかりません。

それでは、このようなものを設定する最速の方法は何ですか?

答え1

udev / rsyncパスを使用できますが、いくつかのスクリプトが必要です。確認するイノティファイツールそれにもかかわらず、これはファイルシステムの変更に関する通知をアプリケーションに送信するのに役立ちます。

私はローカルファイルシステムを同期するための3つのGUI(クイックセットアップ)ツールを知っています。

  1. 調和成熟し、よく文書化されています。モニタリング方法は少し古いですが、inotifyで自動化できます(まだいくつかのスクリプトが必要です)。

  2. ディレクトリ同期プロフリーソフトウェアのように聞こえませんが、そうです。

  3. 無料ファイル同期最近発売されましたが有望に見えます。ディレクトリ比較をバッチとして保存し、外部ドライブのマウントなどのイベント同期をトリガーするオプションがあります。

答え2

@dartonwの良い答えに加えて、simlpe双方向同期にbashスクリプトを使用したい場合は、次のようにすることもできます。同期この方法

#!/bin/sh
exitcode=1 
#do check if usb flash is mounted
if test -e '/your_path_to_usb_mountpoint';then 
exitcode=0
#from folder to usb if the files are newers
rsync -avun --inplace  /your_folder_wich_you_want_to_syncronize/ /your_path_to_usb_mountpoint ;
#from usb to folder if the files are newers
rsync -avun --inplace /your_path_to_usb_mountpoint/ /your_folder_wich_you_want_to_syncronize/ 
fi 
#if the flash is not mounted exit with exitcode=1 
exit $exitcode

関連情報