Forum Linux.général Déplacer mes fichiers dans un dossier temporaire avant effacement avec rm

Posté par  (site web personnel) .
Étiquettes : aucune
0
2
fév.
2012

Bonjour à tous,
à cause que j'ai fait une méga boulette, j'ai perdu la moitié de mon $HOME. Heureusement, je fais des backup réguliers et j'ai limité la casse.
Je me demandais cependant si je ne pouvais pas faire un petit truc dans mon .bash_aliases pour éviter de me faire des frayeurs comme ça. Du coup j'ai mis ça :

# rm interactive to avoid unwanted deletion
RM () {
	mv $1 .trash_rm
}
alias rm='RM'


Avant j'utilisais plutôt (mais je trouve que ça ne suffit pas !)
# rm interactive to avoid unwanted deletion
alias rm='rm -i'


Je viens vous demander ce que vous en pensez, si vous faites des choses similaires ou si vous avez d'autre astuces....

D'avance merci pour votre aide.

Olivier

  • # chez moi rm -i

    Posté par  . Évalué à 9.

    Ça suffit.

    PS : il existe 10 catégorie d'administrateur système:
    ceux qui ont déjà fait une grosse boulette, et ceux qui vont en faire une ;)

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: chez moi rm -i

      Posté par  (site web personnel) . Évalué à 10.

      il en existe une 11 ème : ceux qui sont en train de la fai

    • [^] # Re: chez moi rm -i

      Posté par  . Évalué à 5.

      Le problème du -i c'est qu'on prend vite l'habitude de taper "y" "[Return]" en moins de temps qu'il n'en faut à ton cerveau pour relire ce que t'effaces.

      Enfin, admin c'est pour les gens qui restent toujours zen devant un ordi, donc pas moi déjà...

      • [^] # Re: chez moi rm -i

        Posté par  . Évalué à 2.

        Nous n'avons pas la même utilisation du rm alors. Pour me dispenser du y (dans le cas où je serai tenté de le faire, je tape \rm, du coup il m'emmerde plus ;) sinon y'a toujours moyen de faire yes | rm, mais si à la base on met un alias rm="rm -i", c'est qu'il y a une bonne raison.

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

      • [^] # Re: chez moi rm -i

        Posté par  (site web personnel, Mastodon) . Évalué à 1.

        Le problème c'est surtout le jour où tu seras sur une machine où cet alias n'est pas configuré que tu comprendras que c'est une mauvaise idée.

  • # libtrash

    Posté par  . Évalué à 3.

    Bonjour

    Il existe une bibliothèque à charger avec LD_PRELOAD : libtrash. Mais je ne sais pas si elle est encore maintenue.

    Cela dit, je ne l'ai jamais utilisée, et, comme au-dessus, je pense qu'un alias "rm -i" suffit : on ne peut pas installer ce qu'on veut partout et on n'est pas forcément sous Linux...

    Unk

    • [^] # Re: libtrash

      Posté par  (site web personnel) . Évalué à 2.

      Je l'utilise depuis quelques années et elle m'a "sauvé la vie" plusieurs fois.

      C'est vrai qu'elle ne semble plus maintenue (la dernière version date de 2008) mais elle marche bien, y compris pour les appels systèmes à l'intérieur d'un code compilé (ce qui n'est pas le cas de la solution à base d'alias).

      Dans le même genre, j'ai testé delsafe ( http://unix.freecode.com/projects/delsafe ). La page du projet a disparue mais je dois encore avoir le code disponible quelque part.

    • [^] # Re: libtrash

      Posté par  . Évalué à 3.

      Moins complexe qu'un LD_PRELOAD, un outil en ligne de commande qui envoie à la corbeille (standard FreeDesktop).

      • [^] # Re: libtrash

        Posté par  (site web personnel) . Évalué à 2.

        Oui, mais ça ne marche que pour de suppressions de fichiers dans des scripts shell, pas pour des scripts perl, python, ni du code compilé.

        • [^] # Re: libtrash

          Posté par  . Évalué à 4.

          Je pense que remplacer la suppression directe par un déplacement à la corbeille n'est valable que pour le shell. Remplacer la fonction de suppression dans les autres programmes est à mon avis une mauvaise idée, parce que le programme n'est pas "prévu pour".
          S'il crée un grand nombre de fichiers temporaires pour un usage interne et tente de les supprimer, ceux-ci seront envoyés à la corbeille à la place. S'il tente de supprimer un arbre de dossiers, il va supprimer les fichiers les plus profonds d'abord puis remonter pour supprimer les dossiers, alors que pour un envoi à la corbeille, on envoie uniquement le dossier le plus haut, et non chaque fichier individuellement.
          Un explorateur graphique (nautilus, dolphin) aura la fonction déjà implémentée correctement et se servira de l'une ou de l'autre quand il faut.

          • [^] # Re: libtrash

            Posté par  (site web personnel) . Évalué à 1.

            Tout dépends de l'usage de sa machine. Par exemple j'écris très peu de script shell, presque tous mes scripts sont en perl (portabilité, rapidité, habitudes ...)

  • # sauvegarde ?

    Posté par  . Évalué à 5.

    Ta façon implique soit
    -> d'avoir des répertoires .trash un peu partout, et donc un jour faudra bien tout supprimer.
    -> soit de tout mettre dans le même répertoires, mais dans ce cas, le rm risque de prendre une plombe quand tu vas supprimer de gros fichiers, et avoir un léger problème d'espace disque (voir de noms identiques lorsque tu as un fichier de même nom).

    Perso je conseillerais plutôt la mise en place d'une sauvegarde incrémentale journalière (rdiff-backup, bacula,...).

    Tu supprimes sans te poser te question.
    Si tu t'es gouré, ben tu récupère la dernière version sur la sauvegarde.

    La svg se débrouille pour virer les fichiers supprimés trop anciens (suivant ce que tu lui a spécifié)

    Tu peux revenir à plus d'un fichier différent dans le temps, ou des fichiers avec le même nom.

    par contre ça demande d'avoir un espace de stockage un poil plus conséquent, mais pas forcément tant que ça.

  • # rm_secure

    Posté par  . Évalué à 1.

    Dans son livre Shells Linux et Unix par la pratique, Christophe Blaess donne en exemple une fonction rm_secure qui peut t'intéresser, tu devrais la trouver dans ce tar+gz.

    • [^] # Re: rm_secure

      Posté par  (site web personnel) . Évalué à 0.

      Merci pour cette réponse...
      Le chapitre qui aborde la fonction rm_secure est d'ailleurs en libre accès sur le site d'Eyrolles...

      Les logiciels de traitement de texte sont à la rédaction ce que la 2CV est à l'automobile, une vieille voiture dont on se souvient avec nostalgie mais technologiquement dépassée

  • # Garde fou

    Posté par  (site web personnel) . Évalué à 3.

    Bash remplace * par l'ensemble des fichiers présents.

    Donc si un fichier présent n'est pas une option comprise par la commande, ça bloque :

    sebastien@bureau:~$ touch /tmp/test/-t
    sebastien@bureau:~$ cd /tmp/test/
    sebastien@bureau:/tmp/test$ rm *
    rm : option non valide -- t
    Essayez « rm ./-t » pour supprimer le fichier « -t ».
    Saisissez « rm --help » pour plus d'informations.
    
    

    (Bien sûr ça ne remplace pas les sauvegardes…)

    • [^] # Re: Garde fou

      Posté par  (site web personnel) . Évalué à 4.

      Bash fait (faisait c'est sur) des conneries.

      Par exemple :

      rm -rf *
      
      

      efface tout sauf les fichiers . car * en premier veut dire tout sauf le point.

      MAIS

      rm -rf .*
      
      

      efface tout et remonte l'arborescence car il prend . mais aussi .. ce couillon !

      Solution qui marche très souvent

      rm -rf .[a-Z]*
      
      
      • [^] # Re: Garde fou

        Posté par  . Évalué à 3.

        rm -rf .*

        efface tout et remonte l'arborescence car il prend . mais aussi .. ce couillon !

        zsh ne prend pas "." et "..", ce qui prouve une fois de plus sa supériorité. D'autre part, on peut spécifier une option ("setopt glob_dots") pour que "*" corresponde aussi aux fichiers cachés.

        /tmp% setopt glob_dots
        /tmp% echo *x
        .ICE-unix .X11-unix
        
        
    • [^] # Re: Garde fou

      Posté par  . Évalué à 3.

      (root) |> /tmp/test <| touch -- -t
      (root) |> /tmp/test <| rm -- *    
      zsh: sure you want to delete all the files in /tmp/test [yn]? y
      
      
      • [^] # Re: Garde fou

        Posté par  (site web personnel) . Évalué à 1.

        Heureusement qu'il est possible de supprimer ce fichier !

        Mais comme on ne pense pas à rajouter -- à chaque ligne de commande, ça permet de bloquer le processus quand on suit trop ses automatismes…

  • # trash-cli

    Posté par  . Évalué à 1.

    j'utilise trash-cli et un alias rm=trash-put
    https://github.com/andreafrancia/trash-cli

Suivre le flux des commentaires

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