Je lis un exemple de script shell bash:
#!/bin/bash
# This script makes a backup of my home directory.
cd /home
# This creates the archive
tar cf /var/tmp/home_franky.tar franky > /dev/null 2>&1
# First remove the old bzip2 file. Redirect errors because this generates some if the archive
# does not exist. Then create a new compressed file.
rm /var/tmp/home_franky.tar.bz2 2> /dev/null
bzip2 /var/tmp/home_franky.tar
# Copy the file to another host - we have ssh keys for making this work without intervention.
scp /var/tmp/home_franky.tar.bz2 bordeaux:/opt/backup/franky > /dev/null 2>&1
# Create a timestamp in a logfile.
date >> /home/franky/log/home_backup.log
echo backup succeeded >> /home/franky/log/home_backup.log
J'essaie de comprendre l'utilisation de "/ dev / null 2> & 1" ici. Au début, je pensais que ce script utilisait / dev / null pour ignorer les erreurs sans provoquer le plantage du script (un peu comme essayer de gérer les exceptions dans les langages de programmation). Parce que je ne vois pas comment utiliser tar pour compresser un répertoire dans un fichier tar pourrait éventuellement provoquer tout type d'erreur.
tar
n’est pas dans votre $ PATH, car tar
s'est écrasé (on ne sait jamais), car il ne reste plus d'espace sur le périphérique, car la tar
version a changé et requiert une syntaxe différente, car le disque a provoqué une erreur d'E / S. Je suis sûr que vous pourriez en trouver plus.
/dev/null
n'empêche pas le crash, mais nettoie les flux de sortie stdout et stderr.tar
pourrait causer des erreurs de diverses manières. Vous n'avez peut-être pas accès en écriture, le fichier existe peut-être déjà, etc.