J'essaie de créer un script de sauvegarde qui crée une archive complète à partir de mon système chaque nuit. Pour ce faire, j'ai suivi le tutoriel ici .
Donc, pour le tester, j'ai décidé de créer une sauvegarde manuelle:
tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system /
Lorsque j'essaie d'exécuter cette commande, le message d'erreur suivant s'affiche:
tar: /run/: file is on a different filesystem; not dumped
Cela donne un code de sortie égal à 1. Cependant, je souhaite exécuter cette commande dans un script et si le code de retour est 0
, je souhaite déplacer le fichier de sortie, sinon le supprimer. Si je comprends bien le tutoriel lié au dessus de --one-file-system
implique que /run/
est ignoré. Mais pourquoi ai-je l'erreur alors?
Par souci d’exhaustivité, le script (WIP) est présenté ci-dessous:
#!/bin/bash
# Location to store backups
STORAGE=/media/storage/backups/full
# Current date
DATE=$(date +"%d.%m.%YT%H.%M")
TAR="$DATE.tar.gz"
# Check if the file already exists. Should never be the case though.
if [ ! -f /tmp/$TAR ]; then
echo "Changing dir to /"
cd /
# Create tarball
echo "Creating tarball"
tar -cvpzf /tmp/$TAR --exclude=/tmp/$TAR --one-file-system /
retcode=$?
echo "Exit status: $retcode"
if [ $retcode = 0 ] ; then
echo "Moving file.."
# Move the file
mv /tmp/$TAR $STORAGE/$TAR
echo "Done!"
fi
fi
Vous devez d'abord déclarer --one-file-system
avant la règle d'exclusion. Il y a une note du même guide que vous avez suivi.
Si vous voulez exclure tous les autres montages que le courant (j'entends par là les partitions montées sur des répertoires), utilisez l'option --one-file-system system ajoutée avant les règles d'exclusion. Cela a pour effet d'empêcher tar de se croiser avec d'autres supports de n'importe quel répertoire, y compris/mnt ou/media.