それでは始めましょう。
指定: USB HDD、Ubuntu 7.10を搭載したラップトップ、多くの有用なデータ:)
特定のUSB HDDを接続するときの自動増分バックアップ。最後のバックアップから少なくともN分が経過していることを条件とします。
ツール:
- sbackupはPythonの優れたソフトインクであり、rdiff-backupを介して機能し、ローカルフォルダーおよびSSHセッションに書き込むことができます。 データをアーカイブします。 インストール済みパッケージのリストを保存します。
udevルールファイル-ここで、ディスクを巧みに識別してマウントします
いくつかのbashスクリプト-バックアップが必要かどうかを確認します
続行:
まず最初に、特定のネジを定義するためにudevを取得する必要があります。 とても簡単です。 ファイルを作成する
/etc/udev/rules.d/94-usb-backup.rules番号94は95-hal.rules -1として選択されます。 これは重要です HALがデバイスを識別する前に、私たちの汚い行為を行う方が良いでしょう。
-/ etc / udev / rules.d / 94-usb-backup.rules-- SUBSYSTEM == "block"、ENV {DEVTYPE} == "partition"、SYSFS {idProduct} == "2339"、SYSFS {idVendor} == "152d"、NAME = "backup"、RUN + = "/ usr / local / bin / usb-backup "
次に、どのパラメーターでデバイスを認識するかを決定する必要があります。 特定のネジのみにバックアップする必要がある場合は、最もユニークなパラメーターのセットを選択しますidProductとidVendorをいくつか用意しました。 忠実にするために、たとえばiSerialを追加できます(コメントについてはsmall_jamとspiritedflowに感謝します)。 idProductおよびidVendor値は、コマンドを使用して特定のデバイスごとに学習する必要があります
$ lsusb –v
そしてそのようなものを手に入れる
... バス005デバイス089:ID 152d:2339 デバイス記述子: 長さ18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0(インターフェイスレベルで定義) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x152d idProduct 0x2339 bcdDevice 1.00 iManufacturer 1 JMicron iProduct 2 USB-ATA / ATAPIブリッジ iSerial 5 901EFFFFFFFF bNumConfigurations 1 構成記述子: 長さ9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 ...
NAME = "backup"は、ネジが/ dev / backupにマウントされることを意味します
RUN + = "/ usr / local / bin / usb-backup"-接続時に実行するスクリプトを示します。 重要! ここでは、コマンドではなくスクリプトの名前を記述します。たとえば、RUN + = "/ usr / local / bin / usb-backup&"と記述すると機能しません。
少し後でスクリプトに戻ります。 とりあえずスタブを作成して、実行権を与えましょう。
-/ usr / local / bin / usb-backup-- #!/ bin / bash
インストールを終了します。
デバイスを自動的にマウントするには、/ etc / fstabに行を追加します
-/ etc / fstab /- ... / dev / backup / media / ext3ユーザーのバックアップ、atime、noauto、rw、nodev、exec、nosuid 0 0
これは、ext3ネジのファイルシステムが提供されます。
次に、テストできます。 ネジをオフにします。 すべての構成を保存します。 /etc/init.d/udev restartを実行します
ネジを接続します。 見ます。 /メディア/バックアップにマウントされている必要があります。
次に、sbackupを構成します。 apt-get install sbackupを使用してリポジトリに配置できます
/etc/sbackup.conf configに十分な構成情報があります。 以下のスクリプトと同じターゲットディレクトリを指定することが重要です。
次に、スクリプト/ usr / local / bin / usb-backupに戻ります
彼には1つの特徴があります。 完了するまで、マウントはそれ以上進みません。 したがって、回避策を使用します。
-/ usr / local / bin / usb-backup-- #!/ bin / bash / usr / local / bin / usb-backup-script&
バックグラウンドで2番目のスクリプトを実行します。 彼はすべての仕事をするでしょう。
-/ usr / local / bin / usb-backup-script-- #!/ bin / bash BCPDIR = / media / backup / backup_storage /#はバックアップディレクトリです for i in `seq 1 10`; する if [-e $ BCPDIR]#マウントされているかどうかを確認しますか? #ディレクトリに入らずに180分以内にファイルを数えます if [`find $ BCPDIR -maxdepth 1 -mmin -180 | grep -v ^ $ BCPDIR $ | grep。 -c` -eq 0]; それから sbackupd#バックアップを実行 fi 休憩#今すぐサイクルする必要はありません fi sleep 1#マウントされている間、1秒間待機します(通常、数秒かかります) やった
出来上がり。 ネジを接続すると、自動増分バックアップを受け取りました。