Forum Linux.général supprimer avec wipe des fichiers sur SSD

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
3
avr.
2018

1) Est-ce utile/efficace de wipe un fichier sur des SSD ou des cartes SD?

2) Si non, y a-t-il moyen de vérifier (dans un script bash) si un fichier/dossier est sur un HDD ou un SSD?

Solution pour la question 2 :

pathDeMonFichier="/home/happyuser/download/full_love"
memoryType=$(cat /sys/block/$( df -P $pathDeMonFichier | grep -Eo "^/[a-Z]{3}/[a-Z]{1,}" | sed -e "s/\/dev\///g" )/queue/rotational)
if [ $memoryType -gt 0 ]; then
    echo "fichier/dossier sur HDD"
else
    echo "fichier/dossier sur SSD"
fi
  • # c'est quoi pour toi "wipe"

    Posté par  . Évalué à -2.

    en anglais "wipe" c'est nettoyer/effacer

    si tu veux effacer un fichier, tu fais :

    • clic droit dessus, supprimer
    • ou en ligne de commande rm /chemin/vers/ton/fichier
    • [^] # Re: c'est quoi pour toi "wipe"

      Posté par  . Évalué à 2.

      wipe dans le cas présent c'est le logiciel ( https://doc.ubuntu-fr.org/wipe )
      Le but étant d'optimiser ce script utilisé dans le tuto : [Tuto/HowTo] Retroshare - renouveller automatiquement l'hostname de votre Hidden Service
      Plus particulièrement le paragraphe suivant

              if hash wipe 2>/dev/null; then
                  # echo "use wipe"
                  wipe -f -S r -s $1/*
              else
                  # echo "wipe is not installed, use rm"
                  rm $1/* 
              fi
      
      • [^] # Re: c'est quoi pour toi "wipe"

        Posté par  . Évalué à 3.

        Le but étant d'optimiser ce script […] particulièrement le paragraphe suivant

        et d'apres toi qu'est-ce qui pourrait etre optimisé dans ce bout de code ?

        parce moi j'ai beau savoir developper, je ne vois pas ce que tu peux optimiser sur ce bout de code.

        comprends-tu seulement ce qu'il fait ? avant de vouloir l'optimiser.

        • [^] # Re: c'est quoi pour toi "wipe"

          Posté par  . Évalué à 2.

          je pense (supposition gratuite), qu'il veut s'assurer qu'il ne va pas user prématurément son SSD ou sa carte SD avec le script,

          ça me semble ok, vu qu'il n'utilise pas l'option -p de wipe ?

          il y a aussi une question de "write barrier", je ne sais pas si tous les SSD , SD card ont cette caractéristique…

          Envoyé depuis mon Archlinux

          • [^] # Re: c'est quoi pour toi "wipe"

            Posté par  . Évalué à 1. Dernière modification le 04 avril 2018 à 11:06.

            je pense (supposition gratuite), qu'il veut s'assurer qu'il ne va pas user prématurément son SSD ou sa carte SD avec le script,

            Ouaip. Il me suis semble qu'on ne peut ré-écricre sur des secteurs sur les techno SD, se qui rend wipe inutile et provoque de l'usure.
            Apres, Google ne me file aucune occurence quand je recherche en bash un moyen pour détecter quel type de mémoire stock un fichier.

            • [^] # Re: c'est quoi pour toi "wipe"

              Posté par  . Évalué à 3.

              On devrait pouvoir y arriver en combinant quelques trucs, non ? :
              -trouver sur quel point de montage est le fichier (par ex: /home)
              -trouver sur quel partition c'est monté (par ex: sda2)
              -trouver de quel type est le block device de cette partoche en fouinant sous /sys (par ex: sda)

              • [^] # Re: c'est quoi pour toi "wipe"

                Posté par  . Évalué à 1. Dernière modification le 04 avril 2018 à 16:42.

                J'ai réussi a forger une commande qui reçoit (en $1) le path du fichier et renvoie 1 s'il est sur HDD ou 0 s'il est sur SSD (ou rien si erreur il me semble):

                cat /sys/block/$( df -P $1 | grep -Eo "^/[a-Z]{3}/[a-Z]{1,}" | sed -e "s/\/dev\///g" )/queue/rotational
                

                Mais je n'arrive pas à l'insérer dans ma condition (bash est capricieux) :

                        if hash wipe 2>/dev/null; then
                             echo "wipe installed"
                            if [ </sys/block/$( df -P $1 | grep -Eo "^/[a-Z]{3}/[a-Z]{1,}" | sed -e "s/\/dev\///g" )/queue/rotational -gt 0 ]; then
                                echo "HDD, use wipe"
                                #wipe -f -S r -s $1/*
                            else
                                echo "SSD, use rm"
                                #rm $1/*
                            fi
                        else
                            echo "wipe is not installed, use rm"
                            #rm $1/*
                        fi

                ==> renvoie [: -gt : opérateur unaire attendu

                Et si je remplace

                if [ </sys/block/$( df -P $1 | grep -Eo "^/[a-Z]{3}/[a-Z]{1,}" | sed -e "s/\/dev\///g" )/queue/rotational -gt 0 ]; then
                

                par

                if [ cat /sys/block/$( df -P $1 | grep -Eo "^/[a-Z]{3}/[a-Z]{1,}" | sed -e "s/\/dev\///g" )/queue/rotational -gt 0 ]; then
                

                ==> [: trop d'arguments

                • [^] # Re: c'est quoi pour toi "wipe"

                  Posté par  . Évalué à 3.

                  stock ton resultat dans une valeur intermediaire, puis test la valeur intermediaire

                  variable_intermediaire=$(cat /sys/block.....rotatinonal)
                  if [ $variable_intermediaire -gt 0 ]
                  then
                  ...
                  • [^] # Re: c'est quoi pour toi "wipe"

                    Posté par  . Évalué à 1. Dernière modification le 04 avril 2018 à 20:19.

                    Oki ça fonctionne en passant par la variable intermédiaire. J'avais déjà essayé mais pas en commençant par $()

                                 monPath=$(cat /sys/block/$( df -P $1 | grep -Eo "^/[a-Z]{3}/[a-Z]{1,}" | sed -e "s/\/dev\///g" )/queue/rotational)
                                if [ $monPath -gt 0 ]; then
                                    echo "HDD, use wipe"
                                    #wipe -f -S r -s $1/*
                                else
                                    echo "SSD, use rm"
                                    #rm $1/
                                fi

                    Merci à vous tous !

            • [^] # Re: c'est quoi pour toi "wipe"

              Posté par  . Évalué à 2.

              tu peux remplacer le bloc que tu veux reecrire par la simple ligne qui contient le rm
              ainsi tu n'utilises pas le wipe, peut importe le media sur lequel tu bosses.

              • [^] # Re: c'est quoi pour toi "wipe"

                Posté par  . Évalué à 1.

                Le but est justement d'utiliser wipe quand c'est possible (car plus secure) et d'utiliser rm uniquement quand wipe est déconseillé.

  • # attention à ton besoin

    Posté par  . Évalué à 4.

    d'apres le manuel de wipe, l'outil ne sert plus à rien sur les systemes de fichiers journalisés pour supprimer des fichiers

    https://linux.die.net/man/1/wipe

    Journaling filesystems (such as Ext3 or ReiserFS) are now being used by default by most Linux distributions. No secure deletion program that does filesystem-level calls can sanitize files on such filesystems,

    il est mieux d'utiliser wipe pour nettoyer un disque dur avant de l'envoyer en reparation, ou de le revendre (donc formater et wipe)

    Therefore wipe is best used to sanitize a harddisk before giving it to untrusted parties (i.e. sending your laptop for repair, or selling your disk). Wiping size issues have been hopefully fixed (I apologize for the long delay).

    • [^] # Re: attention à ton besoin

      Posté par  . Évalué à 1.

      Intéressant.
      Juste après on lit :

      Per-file secure deletion is better implemented in the operating system.

      J'ai donc réglé wipe pour modifié les données sans supprimer, puis rm pour supprimer juste après.
      Est-ce que rm correspond a "better implemented" ou bien faut-il utiliser une autre commande?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.