first commit
This commit is contained in:
commit
ea0e8b05c2
|
@ -0,0 +1,149 @@
|
|||
#!/bin/bash
|
||||
|
||||
HOME_DIR=$HOME"/.KeepassXC"
|
||||
NOM_BASE="Snorky"
|
||||
EXT_BASE=".kdbx"
|
||||
TMP_DIR="tmp"
|
||||
NULL="/dev/null"
|
||||
DATE=$(date +"%d-%m-%y_%H-%M-%S")
|
||||
ROTATE=3
|
||||
CHECKSUM_FICHIER="checksum.txk"
|
||||
|
||||
# Fonction gestion des erreurs
|
||||
#
|
||||
function die () {
|
||||
|
||||
case $1 in
|
||||
1)
|
||||
echo -e "Le repertoire $HOME_DIR n'existe pas."
|
||||
echo -e "Modifier la variable HOME_DIR."
|
||||
exit 1
|
||||
;;
|
||||
2)
|
||||
echo -e "Le process Keepassxc est en cours d'execution."
|
||||
echo -e "Veuillez le fermer et relancer le script."
|
||||
echo -e "ex: kill -9 $2"
|
||||
exit 2
|
||||
;;
|
||||
3)
|
||||
echo -e "Erreur lors de la copie."
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
# Fonction de verification si keepass tourne.
|
||||
#
|
||||
function check_keepassxc () {
|
||||
for process in $(ls -dv /proc/[0-9]* 2> $NULL); do
|
||||
if grep -qiE "keepassxc$" $process/status 2> $NULL; then
|
||||
K_PID=$(echo $process | cut -d "/" -f3)
|
||||
die 2 $K_PID
|
||||
break
|
||||
fi
|
||||
done
|
||||
echo "Aucun process Keepass en cours d'execution."
|
||||
|
||||
|
||||
}
|
||||
|
||||
# Fonction de verification du repertoire $HOME_DIR/tmp
|
||||
#
|
||||
function check_tmp () {
|
||||
|
||||
if [ ! -d $TMP_DIR ]; then
|
||||
echo -e "Le repertoire tmp n'existe pas."
|
||||
echo -e "Creation du repertoire."
|
||||
mkdir $TMP_DIR
|
||||
else
|
||||
echo "Le repertoire tmp existe deja."
|
||||
fi
|
||||
|
||||
}
|
||||
# Fonction de rotation des bases a sauvegarder dans le git.
|
||||
# Gestion du git add/remove dans un deuxieme temps.
|
||||
|
||||
function base_rotation () {
|
||||
|
||||
cd $HOME_DIR/$TMP_DIR
|
||||
for nb in $(seq 0 $(( $ROTATE - 1))); do
|
||||
if [ $(( $ROTATE - $nb )) -ne $ROTATE ]; then
|
||||
if [ -f "$(( $ROTATE - $nb ))_$NOM_BASE"* ]; then
|
||||
NOM_TMP=$(ls "$(( $ROTATE - $nb ))_$NOM_BASE"* | cut -d "_" -f2-)
|
||||
git mv $(( $ROTATE - $nb ))_$NOM_BASE* "$(( $ROTATE - $nb + 1 ))_$NOM_TMP"
|
||||
fi
|
||||
else
|
||||
NOM_TMP=$(ls "$(( $ROTATE - $nb ))_$NOM_BASE"* | cut -d "_" -f2-)
|
||||
git rm $(( $ROTATE - $nb ))_$NOM_BASE*
|
||||
git commit -m "Remove de $NOM_TMP"
|
||||
git push
|
||||
fi
|
||||
|
||||
done
|
||||
}
|
||||
|
||||
# Fonction de copie de la base avant de push sur le git
|
||||
#
|
||||
function copie_base () {
|
||||
|
||||
|
||||
cd $HOME_DIR
|
||||
cp $NOM_BASE$EXT_BASE $TMP_DIR/"1_$NOM_BASE-$DATE$EXT_BASE"
|
||||
git add tmp/1_*
|
||||
echo "Verification des HASH."
|
||||
HASH_BASE=$(md5sum $NOM_BASE$EXT_BASE | cut -d " " -f1)
|
||||
HASH_COPY=$(md5sum $TMP_DIR/"1_"* | cut -d " " -f1)
|
||||
|
||||
echo -e "Hash de la base originale: \n"$HASH_BASE
|
||||
echo -e "Hash de la base copiee: \n"$HASH_COPY
|
||||
|
||||
#if [ ${HASH_BASE} == 00000000000 ]; then
|
||||
if [ ${HASH_BASE} == ${HASH_COPY} ]; then
|
||||
echo -e "Les bases sont identiques."
|
||||
else
|
||||
die 3
|
||||
fi
|
||||
}
|
||||
|
||||
# Fonction de generation du fichier des checksums et de l'upload
|
||||
# sur gitea
|
||||
function git_upload () {
|
||||
cd $TMP_DIR
|
||||
echo > $CHECKSUM_FICHIER
|
||||
for nb in $(seq 1 $ROTATE); do
|
||||
md5sum ${nb}_* >> $CHECKSUM_FICHIER
|
||||
done
|
||||
md5sum $CHECKSUM_FICHIER >> $CHECKSUM_FICHIER
|
||||
git add *
|
||||
git commit -m "Backup base $DATE"
|
||||
git push
|
||||
|
||||
}
|
||||
|
||||
function main () {
|
||||
|
||||
# Deplacement dans le home
|
||||
cd $HOME_DIR 2>$NULL || die 1
|
||||
|
||||
# Verification que le process Keepassxc ne tourne pas
|
||||
# afin de ne pas corrompre la base lors de la copie
|
||||
# à chaud.
|
||||
check_keepassxc
|
||||
|
||||
# Verification du répertoire tmp
|
||||
check_tmp
|
||||
|
||||
# Rotation des bases
|
||||
base_rotation
|
||||
# Copie de la base et verification md5
|
||||
copie_base
|
||||
|
||||
# upload de la base sur gitea
|
||||
git_upload
|
||||
echo
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
main
|
Loading…
Reference in New Issue
Block a user