Outils pour utilisateurs

Outils du site


usbbackup:backups_automatiques_sur_disque_usb_insere

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
usbbackup:backups_automatiques_sur_disque_usb_insere [2021/11/10 09:38] ghussonusbbackup:backups_automatiques_sur_disque_usb_insere [2024/08/28 07:51] (Version actuelle) ghusson
Ligne 8: Ligne 8:
 <code> <code>
  
-ACTION=="add", KERNEL=="sd?[0-9]", SUBSYSTEM=="block", RUN+="/opt/usb_backup.sh"+ACTION=="add", KERNEL=="sd?1", SUBSYSTEM=="block", RUN+="/usr/bin/systemctl --no-block start usb_backup@%k.service"
  
 </code> </code>
- 
  
  
Ligne 25: Ligne 24:
 #!/bin/bash #!/bin/bash
 # apt install beep udisks2 # apt install beep udisks2
- +  
 + 
 LOG_FILE=$0.log LOG_FILE=$0.log
 # CHANGEME :::: # CHANGEME ::::
Ligne 35: Ligne 34:
 RSYNC_PATHS[2]="/opt/" RSYNC_PATHS[2]="/opt/"
 RSYNC_PATHS[3]="/root/" RSYNC_PATHS[3]="/root/"
- +  
 + 
 horoDate() horoDate()
 { {
   echo $(date "+%Y%m%d-%H%M%S")   echo $(date "+%Y%m%d-%H%M%S")
 } }
- +  
 + 
 function uptime_int() function uptime_int()
 { {
Ligne 61: Ligne 60:
   fi   fi
 } }
- +  
 +  
 errorBeep() errorBeep()
 { {
   beep  -f 220  -l 800 -d 200 -r 4   beep  -f 220  -l 800 -d 200 -r 4
 } }
- +  
 + 
 tooSoonBeep() tooSoonBeep()
 { {
   beep  -f 1600  -l 100 -d 20 -r 4   beep  -f 1600  -l 100 -d 20 -r 4
 } }
- +  
 + 
 victoryBeep() victoryBeep()
 { {
Ligne 105: Ligne 104:
      -n -f 1047 -l 1000      -n -f 1047 -l 1000
  }  }
 + 
  
- + echo "===============================================================================" >> $LOG_FILE 
-echo "===============================================================================" >> $LOG_FILE +echo "$(horoDate) New usb device detected: $1." >> $LOG_FILE 
-echo "$(horoDate) New usb device detected: $DEVNAME." >> $LOG_FILE + 
 if [ $(uptime_int) -lt 120 ]; then if [ $(uptime_int) -lt 120 ]; then
   echo "$(horoDate) Uptime too low, not running script." >> $LOG_FILE   echo "$(horoDate) Uptime too low, not running script." >> $LOG_FILE
Ligne 115: Ligne 114:
   exit 1    exit 1 
 fi fi
- +  
 + 
 if [ -e /dev/disk/by-label/$PARTITION_LABEL ]; then if [ -e /dev/disk/by-label/$PARTITION_LABEL ]; then
   echo "$(horoDate) Partition label \"$PARTITION_LABEL\" found." >> $LOG_FILE   echo "$(horoDate) Partition label \"$PARTITION_LABEL\" found." >> $LOG_FILE
Ligne 132: Ligne 131:
     sync     sync
     sync     sync
-    udisksctl power-off --block-device $(readlink -f "/dev/disk/by-label/backuplgc" | sed -e 's/[- 0-9]*$//'>> $LOG_FILE 2>&1 +    echo "$(horoDate) unmounting done" >> $LOG_FILE 
-    echo -e "Script de backup termine correctement :\n\n\n$(tail -n 10 $(echo $LOG_FILE))" | mail -r "root@$(hostname -f)" -s "[$(hostname -f)] USB backup script : OK" root+    echo -e "Script de backup termine correctement :\n\n\n$(tail -n 10 $(echo $LOG_FILE))" | mail -s "[$(hostname -f)] USB backup script : OK" root
     victoryBeep     victoryBeep
 +    udisksctl power-off --block-device $(readlink -f "/dev/disk/by-label/backuplgc" | sed -e 's/[- 0-9]*$//') >> $LOG_FILE 2>&1
     exit 0     exit 0
   else   else
     echo "$(horoDate) Cannot mount /dev/disk/by-label/$PARTITION_LABEL on $MOUNT_POINT, end of script." >> $LOG_FILE     echo "$(horoDate) Cannot mount /dev/disk/by-label/$PARTITION_LABEL on $MOUNT_POINT, end of script." >> $LOG_FILE
-    echo -e "Script de backup termine AVEC PROBLEMES :\n\n\n$(tail -n 10 $(echo $LOG_FILE))" | mail -r "root@$(hostname -f)" -s "[$(hostname -f)] /!\\ USB backup script : KO /!\\" root+    echo -e "Script de backup termine AVEC PROBLEMES :\n\n\n$(tail -n 10 $(echo $LOG_FILE))" | mail -s "[$(hostname -f)] /!\\ USB backup script : KO /!\\" root
     errorBeep     errorBeep
     exit 2     exit 2
Ligne 144: Ligne 144:
 else else
   echo "$(horoDate) Partition label \"$PARTITION_LABEL\" no found, end of script." >> $LOG_FILE   echo "$(horoDate) Partition label \"$PARTITION_LABEL\" no found, end of script." >> $LOG_FILE
-  echo -e "Script de backup termine AVEC PROBLEMES :\n\n\n$(tail -n 10 $(echo $LOG_FILE))" | mail -r "root@$(hostname -f)" -s "[$(hostname -f)] /!\\ USB backup script : KO /!\\" root+  echo -e "Script de backup termine AVEC PROBLEMES :\n\n\n$(tail -n 10 $(echo $LOG_FILE))" | mail -s "[$(hostname -f)] /!\\ USB backup script : KO /!\\" root
   errorBeep   errorBeep
   exit 3   exit 3
-fi+
  
 </code> </code>
Ligne 154: Ligne 154:
  
  
-===== Changer le comportement de systemd-udev ===== +===== Ajouter le service systemd =====
- +
-Si on ne fait pas ça, il est alors impossible d'arrêter proprement le disque USB à la fin du backup, à cause du namespace particulier utilisé par systemd pour le points de montage !+
  
-    systemctl edit systemd-udevd+    systemctl edit --full --force usb_backup\@.service
  
 Mettre : Mettre :
  
 <code> <code>
 +
 +[Unit]
 +Description=Backup to USB Flash Disk
 +BindsTo=dev-%i.device
  
 [Service] [Service]
-PrivateMounts=no+Type=simple 
 +ExecStart=/opt/usb_backup.sh %I
  
 </code> </code>
Ligne 173: Ligne 176:
 <code> <code>
 systemctl daemon-reload systemctl daemon-reload
 +udevadm control --reload-rules && udevadm trigger
 systemctl restart systemd-udevd systemctl restart systemd-udevd
 </code> </code>
 +
 +
 +Pour créer un disque de backup :
 +  * faire une table de partition GPT
 +  * créer 1 partition de type Linux, avec le label correspondant à $PARTITION_LABEL
 +  * formater la partition
 +  * tester
 +
  
usbbackup/backups_automatiques_sur_disque_usb_insere.1636537133.txt.gz · Dernière modification : 2021/11/10 09:38 de ghusson