Archives

KDE : Compresser en multithread avec pbzip2

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

tarbzip





Présentation





Par défaut, ARK (le gestionnaire de compression de KDE) a quelques entrées pour compresser rapidement un fichier : zip, tar, ou personnalisé.

Même si l'on choisi personnalisé, on a accès aux types d'archive compressées par défaut (zip, tar, tar.gz, tar.gz) mais ceux-ci ne supportent pas le multithreading.



Le multithreading, c'est le fait de pouvoir utiliser plusieurs processeurs en même temps.





Ajouter un menu dans le clic droit de KDE pour compresser en tar.bz2 en multithreading





Prérequis





  • Environnement KDE 4
  • Ark d'installé
  • pbzip2 d'installé







Créer l'entrée dans le menu ACTION de KDE





Pour créer une nouvelle entrée dans le menu Action de KDE, il faut créer un fichier .desktop dans le dossier ~.kde4/share/kde4/services/ServiceMenu/ pour l'utilisateur ou dans /usr/share/kde4/services/ServiceMenus/ pour tous les utilisateurs.



Voici mon fichier ~/.kde4/share/kde4/services/ServiceMenu/pbzip2.desktop



Code BASH :
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
Actions=tarpbzip2
MimeType=all/all;
 
[Desktop Action tarpbzip2]
Exec=sh /home/adrien/.scripts/pbzip2.sh %f
Icon=ark
Name=Compresser en tar.bz2 (Multithread)




Adapter le chemin /home/adrien/.scripts/pbzip2.sh suivant l'endoit où vous placerez le script.

Conserver le sh pour lancer notre script avec sh et le %f pour passer en argument le fichier sur lequel on a cliqué.






Créer le script pbzip2.sh





Voici le contenu du fichier /home/adrien/.scripts/pbzip2.sh



Code BASH :
#! /bin/bash
 
exist=1
nb=0
fic="$1"
 
if [[ -f "$fic".tar.bz2 ]]
then
    while [ $exist -eq 1 ]
    do
        let nb++
        if [[ -f "$fic-$nb".tar.bz2 ]]
        then
            exist=1
        else
            exist=0
        fi
    done
    fic="$fic-$nb"
fi
 
tar -I pbzip2 -cvf "$fic".tar.bz2 "$1" && kdialog --title "Compression terminée" --msgbox "La compression du fichier : \n $fic.tar.bz2 \n s'est terminée avec succès."
 




Cerise sur le gâteau, si la commande tar a réussi, on une petite fenêtre de confirmation :)



Enjoy !