systemdに接続されたHDでバックアップを実行する

systemdに接続されたHDでバックアップを実行する

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*

おすすめ記事