Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1513 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Divers

  suppression en masse et rapide de fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

suppression en masse et rapide de fichier

n°1198522
Hanka
Posté le 12-02-2010 à 13:47:03  profilanswer
 

Bonjour tout le monde,
 
J'utilise pdumpfs pour journaliser une partie de mes backups sur disques. Ca fonctionne pas mal et me permet d'accéder rapidement aux sauvegardes sans devoir manipuler les bandes.  
 
Par contre, le nettoyage est problématique. Pas tant à cause de l'espace utilisé, mais plutôt au niveau de la quantité de fichiers à supprimer.   Je nettoie automatiquement j-30  chaque jour, par contre.  
 
Mais la commande rm -rf n'est pas très rapide. Il n'est pas rare que la suppression de fichiers prenne plusieurs jours. Il faut au serveur plusieurs heures avant de commencer à effectivement supprimer les fichiers. :/ Connaitriez-vous une alternative à la commande rm?  
 
Merci d'avance.

mood
Publicité
Posté le 12-02-2010 à 13:47:03  profilanswer
 

n°1198524
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 12-02-2010 à 13:55:44  profilanswer
 

find . -ctime +30d -delete


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1198527
Hanka
Posté le 12-02-2010 à 14:05:58  profilanswer
 

j'ai déjà essayé ça, mais alors je rencontre un problème. Il efface bien les fichiers vieux de plus de 30 jours. Mais comme je sauvegarde les fichiers avec rsync en conservant les attributs et que pdumpfs conserve également les attributs, la commande  find efface également les fichiers dans les répertoires autres que j -30. :/
 
j'ai essayé en lui collant un 'type d' pour qu'il s'attaque au répertoire parent qui lui reçoit la date de création réelle, mais ça ne fonctionne pas.  
 
La commande find -delete serait parfaite si je parvenais à lui donner comme zone de rechercher le répertoire j -30. Ce qui donne pour ceux qui ne connaissent pas pdumpfs YYYY/MM/DD .
 
 
C'est surtout que je ne vois pas comment lui dire de chercher dans le répertoire.


Message édité par Hanka le 12-02-2010 à 14:12:04
n°1198528
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 12-02-2010 à 14:09:17  profilanswer
 

bah au lieu de . tu mets le répertoire voulu :spamafote:


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1198529
Hanka
Posté le 12-02-2010 à 14:11:05  profilanswer
 

disons que j'aurais voulu mettre ça dans un cron et ne plus m'en soucier. :)
 

n°1198530
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 12-02-2010 à 14:11:57  profilanswer
 

calcule la date à moins 30 jours et puis voila :spamafote:


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1198533
kisscoolz
Posté le 12-02-2010 à 14:14:41  profilanswer
 

Quelque chose comme ca dans ton crontab ?  
 
0 0 * * * root find /le/chemin/vers/le/dossier/j-30 -ctime +30d -delete
 
Pour lancer la commande tous les jours a minuit.


Message édité par kisscoolz le 12-02-2010 à 14:15:11
n°1198535
Hanka
Posté le 12-02-2010 à 14:20:49  profilanswer
 

black_lord a écrit :

calcule la date à moins 30 jours et puis voila :spamafote:


 
C'est quelque chose que je ne connais pas.  Je ne suis pas informaticien de formation. J'ai quelques connaissances qui me permettent d'assurer la maintenance des pc's de la pme pour laquelle je travaille, mais ce n'est pas ma fonction première.  
 
J'implémente des solutions linux car elles nous permettent de faire des économies et que pour la plupart de nos besoins (mails, ftp, etc..), c'est gratuit et bien documenté. Par contre, dès qu'il faut entrer  dans le code, je ne suis plus.


Message édité par Hanka le 12-02-2010 à 14:21:18
n°1198537
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 12-02-2010 à 14:25:43  profilanswer
 

pour l'avoir :


date --date='30 days ago' +%Y/%m/%d

 

à toi de la formatter comme tu veux ;)


Message édité par black_lord le 12-02-2010 à 14:26:46

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1198538
Hanka
Posté le 12-02-2010 à 14:28:22  profilanswer
 

:jap:  Merci beaucoup.  

mood
Publicité
Posté le 12-02-2010 à 14:28:22  profilanswer
 

n°1199636
Hanka
Posté le 18-02-2010 à 09:57:21  profilanswer
 

Je reviens vers vous car mon script semble ne pas fonctionner. :/  
 


#!/bin/bash
 
date=$(date --date='30 days ago' +%Y/%m/%d)
 
find /home/backups/datedbackups/$date -ctime +30 -delete

 
 
Alors que  si je remplace -delete par -exec ls {} \;
 
J'obtiens bien la liste des répertoires et fichiers  du répertoire 2010/01/19/  
 
J'ai essayé de remplacer le -delete par -exec rm -rf {} \; mais sans plus de succès.  
 
Une idée?
 
Petit détail, j'ai voulu utiliser la commande strace -p 3198  pour voir ce qui était effectivement fait par le script, mais j'obtiens la réponse suivante: Process 3198 attached - interrupt to quit

Message cité 1 fois
Message édité par Hanka le 18-02-2010 à 10:02:39
n°1199717
Profil sup​primé
Posté le 18-02-2010 à 14:47:37  answer
 

Hanka a écrit :

Je reviens vers vous car mon script semble ne pas fonctionner. :/  
 


#!/bin/bash
 
date=$(date --date='30 days ago' +%Y/%m/%d)
 
find /home/backups/datedbackups/$date -ctime +30 -delete

 
 
Alors que  si je remplace -delete par -exec ls {} \;
 
J'obtiens bien la liste des répertoires et fichiers  du répertoire 2010/01/19/  
 
J'ai essayé de remplacer le -delete par -exec rm -rf {} \; mais sans plus de succès.  
 
Une idée?
 
Petit détail, j'ai voulu utiliser la commande strace -p 3198  pour voir ce qui était effectivement fait par le script, mais j'obtiens la réponse suivante: Process 3198 attached - interrupt to quit


C'est une bonne idee ca.
 
Comme ca si jamais ta fonction "date=$(date --date='30 days ago' +%Y/%m/%d)" ne retourne rien pour y ou x raisons, ca efface dans tous les repertoires (vu que tu ne fais pas de tests pour savoir si ta variable est vide ou non)

n°1199721
Hanka
Posté le 18-02-2010 à 15:15:20  profilanswer
 

Ce n'est pas faux.  
 

#!/bin/bash
 
date=$(date --date='30 days ago' +%Y/%m/%d)
 
if [ -n $date ]; then
find /home/backups/datedbackups/$date/* -exec ls {} \;
#find /home/backups/datedbackups/$date -type d -ctime +30 -delete
fi


 
Ceci te semble-t-il plus approprié?  
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Divers

  suppression en masse et rapide de fichier

 

Sujets relatifs
Impossible de supprimer un fichier sous serveur DebianVMware - principe de stockage serveur de fichier
Script Unix (sh) - Créer un fichier .log - Récupérer message d'erreur[vim] commandes en tête de fichier texte [résolu]
[RESOLU] renommer un fichier commencant par -Tsvn et suppression de copie locale
À effacer svpSystème de fichier qui se bloque
[awk (ou autre)] comment lire une ligne sur 3 d'un fichier texte ? 
Plus de sujets relatifs à : suppression en masse et rapide de fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR