cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

Les systĂšmes Micro$oft Windows peuvent stocker des miniatures et mĂ©tadonnĂ©es des fichiers images contenus dans les rĂ©pertoires. Les vignettes et associĂ©es les mĂ©tadonnĂ©es sont stockĂ©es dans des fichiers Thumbs.db (qui sont des fichiers structurĂ©s OLE non documentĂ©s). Une fois qu’une image a Ă©tĂ© supprimĂ©e du systĂšme de fichiers, la vignette et les mĂ©tadonnĂ©es associĂ©es restent stockĂ©es dans le fichier Thumbs.db.

Cela peut ĂȘtre une solution pour rĂ©cupĂ©rer des images de mauvaises qualitĂ© certes, mais qui dans certain peuvent ĂȘtre une consolation suffisante.


ඏ

Un cas d’usage frĂ©quent est la recherche d’une image dont on ignore la localisation, le nom, la date et si elle n’a pas Ă©tĂ© effacĂ©e
 Dans ce cas la recherche de l’image peut ĂȘtre trĂšs longue et le fait de ne pas l’avoir trouvĂ©e n’indique pas grand-chose. Avec cette mĂ©thode, si elle a Ă©tĂ© mise en cache, on sera Ă  mĂȘme de dĂ©terminer si elle a Ă©tĂ© supprimĂ©e ou non. De plus l’exploration d’une grande quantitĂ© d’image est consommatrice en CPU et cela peut mettre pas mal de temps Ă  s’afficher, ici on pourra ne s’attarder que sur des images de tailles rĂ©duites qui s’afficheront rapidement.

Pour extraire les vignettes des fichiers Thumbs.db :

Je vous propose la petite application vinetto pour cela :


ඏ

Installation

Cette application fait partie des dépÎts standard, elle est donc particuliÚrement simple à installer.

sudo apt install vinetto

ඏ

Utilisation basique

vinetto [OPTIONS] [-s] [-U] [-o DIR] file

Options :
  --version   Affiche la version du programme et sort
  -h, --help  Affiche le message d’aide et sort
  -o DIR      Écrit les vignettes dans le rĂ©pertoire DIR
  -H          Écrit un rapport au format HTML dans le rĂ©pertoire DIR
  -U          Utilise l’encodage utf8
  -s          CrĂ©ation d’un lien symbolique vers le nom rĂ©el de l’image
              dans le dossier DIR/.thumbs

Voici quelques exemples d’utilisation de la commande vinetto (traduction du la documentation officielle):

  • Comment afficher les mĂ©tadonnĂ©es contenues dans un fichier Thumbs.db :
vinetto /path/to/Thumbs.db
  • Comment extraire les vignettes associĂ©es dans un rĂ©pertoire :
vinetto -o / tmp / vinetto_output /path/to/Thumbs.db
  • Comment extraire les vignettes associĂ©es dans un rĂ©pertoire et produire un rapport HTML pour prĂ©visualiser ces images via votre navigateur prĂ©fĂ©rĂ©.
vinetto -Ho / tmp / vinetto_output /path/to/Thumbs.db
  • Comment obtenir un rapport de mĂ©tadonnĂ©es sur tous les fichiers Thumbs.db non supprimĂ©s contenus dans une partition :
find / mnt / hda2 -iname thumbs.db -printf "\ n == \ n% p \ n \ n" -exec vinetto {} \; 2> /tmp/vinetto_err.log> /tmp/vinetto_hda2.txt

Pour ma part, j’ai rencontrĂ© quelques difficultĂ©s avec vinetto lorsque les chemins contenaient des espaces, je ne vous conseille donc pas d’utiliser des dĂ©rivĂ©s de la derniĂšre syntaxe.


ඏ

Utilisation massive

Si vous souhaitez extraire les vignettes et les mĂ©tadonnĂ©es de l’ensemble des fichiers Thumbs.db existant dans une arborescence, voici un bout de code bash que vous pouvez adapter et qui vous permettra de le faire.

function vinetto_recursive {
  local dir="$1"
  local file=
  local -r extract_to='.Thumbs.content' # Nom du sous-dossier oĂč seront stockĂ©es les vignettes et les mĂ©tadonnĂ©es

  if [ -z "${dir}" ] ; then
    dir="$( pwd )"
  fi

  while read -r file ; do
    pushd "$( dirname "${file}" )" >/dev/null || return 1

    if [ ! -d "${extract_to}" ] ; then
      mkdir -v "${extract_to}" || return 1
    fi
    vinetto -o "${extract_to}" "$( basename "${file}" )"

    popd >/dev/null || return 1
  done < <( find "${dir}" -type f -iname thumbs.db )
}

Vous pouvez copier-coller cette fonction dans un terminal bash et ensuite l’utiliser comme suit :

vinetto_recursive 'chemin/vers/le/dossier/a/traiter/récursivement'

Si vous omettez le nom de dossier, le chemin courant sera utilisé.


ඏ

Utilisation massive dans le cadre de la récupération de données

Dans le cas de la rĂ©cupĂ©ration de donnĂ©es, il n’est pas toujours possible de retrouver le nom d’origine du fichier. Cependant les outils de rĂ©cupĂ©ration arrivent gĂ©nĂ©ralement Ă  retrouver le type de donnĂ©e contenu dans le fichier et par consĂ©quent le nomme avec une extension raisonnable.

Attention, dans le cadre de la rĂ©cupĂ©ration de donnĂ©es, ne travaillez jamais sur le disque d’origine, mais sur une image de celui-ci.

Dans ce cas, je vous propose un script un peu plus agressif permettant de récupérer les miniatures et les métadonnées :

function vinetto_recursive2 {
  local dir="$1"
  local file=
  local extract_to=

  if [ -z "${dir}" ] ; then
    dir="$( pwd )"
  fi

  while read -r file ; do
    pushd "$( dirname "${file}" )" >/dev/null || return 1

    extract_to=".$( basename "${file}" ).content"

    if [ ! -d "${extract_to}" ] ; then
      mkdir -v "${extract_to}" || return 1
    fi
    vinetto -o "${extract_to}" "$( basename "${file}" )" || return 1

    popd >/dev/null || return 1
  done < <( find "${dir}" -type f -name '*.db' )
}

Pour supprimer les fichiers gĂ©nĂ©rer par la fonction ci-dessus, je vous propose d’utiliser la fonction suivante :

function vinetto_recursive2_cleanup {
  local dir="$1"
  local subdir=

  if [ -z "${dir}" ] ; then
    dir="$( pwd )"
  fi

  while read -r subdir ; do
    find "${subdir}" -type d -name '.thumbs' -print -exec rm -fr {} \;
  done < <( find "${dir}" -type d -name '.*.db.content' )
}

ඏ

Rappel annexe

Pour effacer une structure de dossier vide sous Linux, vous pouvez utiliser la syntaxe suivante.

find . -type d -empty -print -delete

ඏ

Références

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog