Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/12/2010, à 09:55

SonOfGod7

corbeille linux

Bonjour je veux creer un script qui va archiveer tous les fichiers et dossiers que que je vais supprimer, à l'aide d'une commande que je nomme erase par exemple.

je pense que la commande mv fic

/home/monNom/corbeille

pourra faire l'affaire.
Mais
Après une analyse et un peu de recherche sur le web je me suis poser des questions.

- Es ce que la fonction mv entrainera la modification de la date de modification du fichier dans la corveille ( pour faciliter les recherches selon la date )
- Comment garder le chemin où était le fichier ?

-  Comment restaurer ?

merci

Hors ligne

#2 Le 12/12/2010, à 10:26

wido

Re : corbeille linux

Bonjour,
l'idée que je te propose est de recréer l'arborescence du système ( de la racine jusqu'au fichier) en utilisant par exemple:

fichier="$1"
racine="/home/monNom/corbeille"
mv "$fichier" "$racine/$fichier"
echo "le $fichier a été déplacé en $racine/$fichier"

pour la date, je ne sais pas.

Hors ligne

#3 Le 12/12/2010, à 16:20

SonOfGod7

Re : corbeille linux

Merci, pour ta solution en tout cas elle fera le ce qui est à faire en tout cas.
Tu conviens avec moi que c'est un peu lourd à la longue.
Moi j'aurai voulu un truc plus classe wink

Par exemple une autre idée est de sauvegarder le fichier et son arborescence complète style.
si je veu supprimer le fichier password dans etc smile.

Je vais le deplacer dans le dossier /home/monNom/corbeille avec comme nom _etc_password.
J'ai subsituer "/" par "_" pour respecter la nomenclature des fichiers.

Voila en quelque sorte mon idée, mais j'aimerai savoir si l'on peut faire mieux.

Pour mv après avoir effectuer plusieurs test je me suis rendu compte qu'il conserve la date de modification.
Alors que cp la modifie vraiment,

voila un debut

#!/bin/bash
if [ -e $1 ] && [ -n $1 ]
then
    c="echo $1 | cut -c 1"
    fil="$1"
    if [ $c != "/" ]
    then
        fil="`pwd`_$1"        
    fi
    fil=$(cat $fil | tr "/" "_" )
    echo $fil
    cp `echo $1` ~/trash/$fil
    rm -rf $1

fi

on me met l'erreur

del: ligne 8 : [: trop d'arguments

Malgrés cette erreur, il deplace le fichier que je supprime dans le dossier trash mais le fichier garde le même nom (son basename ) au lieu de _home_login_Document_fichier

Dernière modification par SonOfGod7 (Le 12/12/2010, à 18:10)

Hors ligne

#4 Le 12/12/2010, à 18:31

SonOfGod7

Re : corbeille linux

C'est bon j'ai pu faire le script je le met en ligne,
j'attend vos améliorations

#!/bin/bash


if [ -e $1 ] && [ -n $1 ]
then
    c=`echo $1 | cut -c 1`
    echo $c
    fil="$1"
    if [ $c != "/" ]
    then
        fil=`pwd`_$1
                
    fi
    fil=$(echo $fil | tr "/" "_" )
    echo "inouss $fil"
    cp `echo $1` ~/trash/$fil
    rm -rf $1

fi

Amelioration à apporter : il pourrait supprimer de maniere recursif (pour les dossiers).
J'attend vos commentaires et vos ameliorations

Et aussi faire une fonction de restauration des fichiers, je la ferai dès que possible.
Si quelqu'un peut la faire entre temps ce sera cool.

Je penses que ce sont des scripts très utile.

Dernière modification par SonOfGod7 (Le 12/12/2010, à 18:32)

Hors ligne

#5 Le 12/12/2010, à 18:52

chopinhauer

Re : corbeille linux

Il a des spécifications sur le site de Freedesktop sur comment fonctionne la poubelle dans un système libre.

En résumé elle se trouve dans $XDG_DATA_HOME/Trash qui normalement est ~/.local/share/Trash et contient deux sous-répertoires : files pour y mettre les fichiers effacés et info pour sauvegarder le chemin original du fichier et sa date de effacement (le mtime n'est pas changé quand on bouge un fichier).

Beaucoup d'outils implémentent cette spécification, par exemple gvfs-trash du paquet gvfs-bin.

PS : Dans ton script t'aura beaucoup de problèmes avec les espaces (pas assez de quoting), tu dois mettre les noms des fichiers entre guillemets anglais " pour qu'il ne soient pas considérés deux noms. L'expression `echo $1` est bien plus longue que "$1" et cp n'est pas récursif, donc t'aura un problème avec le répertoires.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#6 Le 12/12/2010, à 19:18

kyncani

Re : corbeille linux

J'ai fait une petite recherche pour voir si ça existais déjà, c'est le cas http://packages.ubuntu.com/maverick/trash-cli http://code.google.com/p/trash-cli/

Hors ligne

#7 Le 12/12/2010, à 20:06

SonOfGod7

Re : corbeille linux

loool j'aurai quand même essayé,
Je me doutais qu'il devait exister un truc comme ça, mais puisque j'avais pas trouvé, je me suis resolu à le developper moi même.
En tout cas merci, je pense que j'utiliserai ces paquet deja fait.

Hors ligne