USB経由でHDを接続したら、a)HDをマウントし、b)バックアップスクリプトを実行する必要があります。
私が現在持っているのはbackintime.service
[Unit]
Description="Runs backintime to backup."
[Service]
User=user
ExecStart=/usr/bin/systemd-inhibit --what=sleep --why="Backup" "backintime -b"
バックアップスクリプトを起動してbackup.mount
[Unit]
Description=Backup Disk
Before=backintime.service
[Mount]
What=/dev/disk/by-uuid/931129c7-7f15-4042-9a69-796c9eb8ffc9
Where=/media/backup
しかし、これを自動化する方法は何ですか?
答え1
私は非常に似たシステムを実装しようとしています。うまくいきましたが、それでも修正したいです(より一般的な質問を参照してください:systemd - サービス完了後のデバイスのマウント解除)。
これはあなたの問題に対する有効な解決策です。
バックアップサービス
[Unit]
Description=<DESCRIPTION HERE>
BindsTo=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount
After=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount
[Service]
ExecStart=<CALL TO BACKUP SCRIPT HERE>
注: ストレージ・デバイスのリストを取得するには、以下を使用します。systemctl list-units --all --full | grep disk
あなたは追加したいかもしれません手動起動拒否=[単位]の下にもあります。
mnt-backup.mount
[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=umount.target
[Mount]
What=/dev/disk/by-uuid/<DEVICE UUID HERE>
Where=/mnt/backup
Type=<FILESYSTEM HERE>
ほぼすべて来ました。ここで自動的に起動するには、backup.service
次のようにします。udevルール。
ここでは、[Unit]の下にRefuseManualStart = yesを追加することもできます。
90-バックアップ。ルール
KERNEL=="sd*", ATTRS{serial}=="<HD SERIAL HERE>", TAG+="systemd", ENV{SYSTEMD_WANTS}+="backup.service"
注:特定のデバイス(シリアル番号を含む)の属性のリストを取得するには、次のようにします。udevadm info -a -n /dev/sd*