397 lines
12 KiB
Plaintext
397 lines
12 KiB
Plaintext
###############################################################################
|
||
# help functions
|
||
###############################################################################
|
||
|
||
function bobaman {
|
||
cat << EOF
|
||
BorgBackup alias and functions (by Djan GICQUEL)
|
||
---
|
||
bobals With argument : list all files of an archive
|
||
Without argument : list achives in repo
|
||
bobagrepls List the archives of the repository with a filter as argument
|
||
bobainfoa Get information of an archive in argument
|
||
bobainfor Get information of a repository
|
||
bobainfolast Get info from last archive
|
||
bobainfoall Get info from all archives in the repository (can be long and cpu intensive)
|
||
bobadurationr Show name and backup duration for all archive in the current repo (can be long and cpu intensive)
|
||
bobadur List the name of all archives and sizes (O,C,D) (can be long and cpu intensive)
|
||
bobamount Mount archive in argument in the home dir of the current user
|
||
bobamountfirst Mount first archive in the home dir of the current user
|
||
bobamountlast Mount last archive in the home dir of the current user
|
||
bobasearchinrepo Search for a file in the repository, the function will display a list of all archives that contain the match
|
||
bobasearchinarchive Search for a file in the archive in argument, displaying full path in the archive
|
||
1st argument : archive,2nd argument : text to find
|
||
bobacachedel Delete the cache dir of a repository (do not delete any archive)
|
||
bobasecuritydel Delete the security folder from a repository (do not delete any archive)
|
||
bobadel Delete the archive in argument
|
||
bobadelast Delete the last archive in the repository
|
||
bobacheckrepo Check the repo consistencyi without repairing it (to avoid data lost)
|
||
bobadeleter Mass archives deleting
|
||
bobagrepdeleter Mass archives deleting with filter as argument
|
||
bobarenamer Mass archives renaming
|
||
|
||
EOF
|
||
}
|
||
|
||
function bobaaide {
|
||
cat << EOF
|
||
BorgBackup alias and functions (by Djan GICQUEL)
|
||
---
|
||
bobals Lister les archives du dépôt
|
||
bobagrepls Lister les archives du dépôt avec un filtre en argument
|
||
bobainfoa Obtenir les informations d’une archive
|
||
bobainfor Obtenir les informations d’un dépôt
|
||
bobainfolast Obtenir les informations de la dernière archive
|
||
bobadel Supprimer l'archive en paramètre
|
||
bobadelast Supprimer la dernière archive du dépôt
|
||
bobacheckrepo Vérifier la consistance d'un dépôt sans le réparer (pour éviter les pertes de donnée)
|
||
bobamount Monter une archive dans le home de l'utilisateur courant
|
||
bobamountlast Monter la dernière archive dans le home de l'utilisateur courant
|
||
bobainfolast Afficher les infos de la dernière archive
|
||
bobainfoall Affiche les infos de toutes les archives du dépôt (peut être long)
|
||
bobasearchinrepo Chercher un fichier dans le dépôt, la fonction va afficher le nom de toutes les archives qui contienne le fichier
|
||
bobasearchinarchive Chercher un fichier dans une archive en argument, affiche le chemin dans l'archive
|
||
1er argument : archive,2ème argument : chaîne de caractère à chercher
|
||
bobaduration Montrer le nom des archives et le temps de sauvegarde
|
||
bobadur Lister le nom des archive et leurs tailles (originale, compressée, dédupliquée)
|
||
bobadeleter Supprimer facilement plusieurs archives d'un dépôt
|
||
bobagrepdeleter Supprimer facilement plusieurs archives d'un dépôt avec un filtre en argument
|
||
bobarenamer Renommer en masses les archives d'un dépôt
|
||
bobacachedel Supprimer le cache d'un dépôt (ne supprime aucune archive)
|
||
bobasecuritydel Supprimer le dossier security d'un dépôt (ne supprime aucune archive)
|
||
|
||
EOF
|
||
}
|
||
|
||
alias bobahelp="bobaman"
|
||
|
||
###############################################################################
|
||
# generals functions
|
||
###############################################################################
|
||
|
||
function TestBorgRepo {
|
||
if [ ! -f "config" ]; then
|
||
TestBorgErr=1
|
||
echo "Unable to find borgbackup repo config file."
|
||
fi
|
||
|
||
if [ ! -d "data" ]; then
|
||
TestBorgErr=1
|
||
echo "Unable to find borgbackup data folder."
|
||
fi
|
||
}
|
||
|
||
function UnMount {
|
||
fusermount -u -z "$mountpoint"
|
||
sleep 5
|
||
rmdir "$mountpoint"
|
||
}
|
||
|
||
function DirExists {
|
||
if [ ! -d "$1" ]; then
|
||
echo "Error, directory $1 missing."
|
||
echo "Exiting.";sleep 10
|
||
exit
|
||
fi
|
||
}
|
||
|
||
|
||
###############################################################################
|
||
# list and infos functions
|
||
###############################################################################
|
||
|
||
function bobals {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
if [ "$1" != "" ]; then
|
||
borg list --short .::$1
|
||
else
|
||
borg list --short ./
|
||
fi
|
||
}
|
||
|
||
function bobagrepls {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borg list --short ./ | grep $1
|
||
}
|
||
|
||
function bobainfoa {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borg info ./::$1
|
||
}
|
||
|
||
function bobainfor {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borg info ./
|
||
}
|
||
|
||
function bobainfolast {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
archive=$(borg list --short ./ | tail -n 1)
|
||
borg info .::$archive
|
||
}
|
||
|
||
function bobainfoall {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
for borgarchive in $(borg list --short ./);do
|
||
echo "------------------------------------------------------------------------------"
|
||
borg info .::$borgarchive
|
||
echo "------------------------------------------------------------------------------"
|
||
done
|
||
}
|
||
|
||
function bobadurationr {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
for borgarchive in $(borg list --short ./);do
|
||
borg info .::$borgarchive | grep "Archive name"
|
||
borg info .::$borgarchive | grep "Duration"
|
||
echo ""
|
||
done
|
||
}
|
||
|
||
function bobadur {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ];then return;fi
|
||
|
||
echo " Original size Compressed size Deduplicated size"
|
||
for borgarchive in $(borg list --short ./);do
|
||
borg info .::$borgarchive | grep "Archive name" | cut -d" " -f3
|
||
borg info .::$borgarchive | grep "This archive" | cut -d":" -f2
|
||
done
|
||
}
|
||
|
||
###############################################################################
|
||
# mount functions
|
||
###############################################################################
|
||
|
||
function bobamount {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
mountpoint="$HOME/borg_$1"
|
||
mkdir $mountpoint
|
||
echo "Archive : $1"
|
||
borg mount ./::$1 $mountpoint
|
||
read -p "Presser une touche pour démontage" CONT
|
||
UnMount
|
||
}
|
||
|
||
function bobamountfirst {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
archive=$(borg list ./ --short | head -n 1)
|
||
mountpoint="$HOME/borg_$archive"
|
||
mkdir $mountpoint
|
||
borg mount ./::$archive $mountpoint
|
||
|
||
read -p "Presser une touche pour démontage" CONT
|
||
UnMount
|
||
}
|
||
|
||
function bobamountlast {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
archive=$(borg list ./ --short | tail -n 1)
|
||
mountpoint="$HOME/borg_$archive"
|
||
mkdir $mountpoint
|
||
borg mount ./::$archive $mountpoint
|
||
|
||
read -p "Presser une touche pour démontage" CONT
|
||
UnMount
|
||
}
|
||
|
||
|
||
###############################################################################
|
||
# search functions
|
||
###############################################################################
|
||
|
||
function bobasearchinrepo {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
for borgarchive in $(borg list --short ./);do
|
||
borggrep=$(borg list --short .::$borgarchive | grep -i $1)
|
||
if [ $? = 0 ];then
|
||
echo ""
|
||
echo "-- $borgarchive --"
|
||
echo "$borggrep"
|
||
echo ""
|
||
fi
|
||
done
|
||
}
|
||
|
||
function bobasearchinarchive {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borg list --short .::$1 | grep -i $2
|
||
}
|
||
|
||
|
||
function bobacachedel {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ];then return;fi
|
||
|
||
repoid=$(cat config | grep id | cut -f3 -d" ")
|
||
echo "Repo ID : "$repoid;sleep 5
|
||
DirExists $HOME/.cache/borg/$repoid
|
||
rm -r $HOME/.cache/borg/$repoid
|
||
}
|
||
|
||
function bobasecuritydel {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ];then return;fi
|
||
|
||
repoid=$(cat config | grep id | cut -f3 -d" ")
|
||
echo "Repo ID : "$repoid;sleep 5
|
||
DirExists $HOME/.config/borg/security/$repoid
|
||
rm -r $HOME/.config/borg/security/$repoid
|
||
}
|
||
|
||
###############################################################################
|
||
# modify repo
|
||
###############################################################################
|
||
|
||
function bobadel {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borg delete ./::$1
|
||
}
|
||
|
||
function bobadelast {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
archive=$(borg list ./ --short | tail -n 1)
|
||
borg delete .::$archive
|
||
}
|
||
|
||
function bobacheckrepo {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
borgrepo="${PWD##*/}"
|
||
|
||
borg check -v .
|
||
notify-send "borg check" "Repo $borgrepo checked"
|
||
}
|
||
|
||
###############################################################################
|
||
# mass functions
|
||
###############################################################################
|
||
|
||
function bobadeleter {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borgrepo="${PWD##*/}"
|
||
file="borgdelete_$borgrepo.sh"
|
||
|
||
borg list --short . >> $file
|
||
if [ "$?" != "0" ]; then echo "Error generating list of archives. Exiting." && return;fi
|
||
|
||
sed -i 's/^/"/' $file
|
||
sed -i 's/$/"/' $file
|
||
sed -i 's/^/#borg delete -v .::/' $file
|
||
|
||
sed -i '1s/^/\n/' $file
|
||
sed -i '1s/^/export BORG_PASSPHRASE=\"\"\n/' $file
|
||
sed -i '1s/^/#Quick and dirty fix for repo with passphrase\n/' $file
|
||
sed -i '1s/^/\n/' $file
|
||
sed -i '1s/^/#Watch out you'\''re doing, there won'\''t be other confirmation\n/' $file
|
||
sed -i '1s/^/#Just uncomment lines you want to delete and save your file\n/' $file
|
||
sed -i '1s/^/\n/' $file
|
||
sed -i '1s/^/### BORG DELETER ###\n/' $file
|
||
|
||
$EDITOR $file
|
||
sh $file
|
||
rm $file
|
||
}
|
||
|
||
function bobagrepdeleter {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
|
||
borgrepo="${PWD##*/}"
|
||
file="borgdelete_$borgrepo.sh"
|
||
borg list --short ./ | grep $1 >> $file
|
||
if [ "$?" != "0" ]; then echo "Error generating list of archives. Exiting." && rm $file && return;fi
|
||
|
||
sed -i 's/^/"/' $file
|
||
sed -i 's/$/"/' $file
|
||
sed -i 's/^/#borg delete -v .::/' $file
|
||
|
||
sed -i '1s/^/\n/' $file
|
||
sed -i '1s/^/export BORG_PASSPHRASE=\"\"\n/' $file
|
||
sed -i '1s/^/#Quick and dirty fix for repo with passphrase\n/' $file
|
||
sed -i '1s/^/\n/' $file
|
||
sed -i '1s/^/#Watch out you'\''re doing, there won'\''t be other confirmation.\n/' $file
|
||
sed -i '1s/^/#Just uncomment lines you want to delete and save your file.\n/' $file
|
||
sed -i '1s/^/\n/' $file
|
||
sed -i '1s/^/### BORG GREP DELETER ###\n/' $file
|
||
|
||
$EDITOR $file
|
||
sh $file
|
||
rm $file
|
||
}
|
||
|
||
|
||
# mass archive renaming
|
||
function bobarenamer {
|
||
TestBorgRepo
|
||
if [ "$TestBorgErr" = "1" ]; then return;fi
|
||
which paste || echo "Paste command not found." exit
|
||
|
||
borgrepo="${PWD##*/}"
|
||
file="file_$borgrepo.txt"
|
||
originals="originals_$borgrepo.txt"
|
||
script="borgrenamer_$borgrepo.sh"
|
||
|
||
echo "Generating list of archives..."
|
||
borg list --short . >> $originals
|
||
if [ "$?" != "0" ]; then echo "Error generating list of archives. Exiting." && return;fi
|
||
|
||
cp $originals $file
|
||
|
||
$EDITOR $file
|
||
sed -i 's/^/"/' $originals
|
||
sed -i 's/$/"/' $originals
|
||
sed -i 's/^/borg rename -v .::/' $originals
|
||
|
||
sed -i 's/^/"/' $file
|
||
sed -i 's/$/"/' $file
|
||
|
||
paste -d" " $originals $file > $script
|
||
|
||
sed -i '1s/^/\n/' $script
|
||
sed -i '1s/^/\n/' $script
|
||
sed -i '1s/^/export BORG_PASSPHRASE=\"\"\n/' $script
|
||
sed -i '1s/^/#Quick and dirty fix for repo with passphrase\n/' $script
|
||
sed -i '1s/^/\n/' $script
|
||
sed -i '1s/^/#Modifications in this file will be applied\, comment all to cancel\.\n/' $script
|
||
sed -i '1s/^/### BORG RENAMER ###\n/' $script
|
||
|
||
$EDITOR $script
|
||
|
||
echo "Renaming..."
|
||
sh $script
|
||
rm $file
|
||
rm $originals
|
||
rm $script
|
||
}
|