Recupération d'images

Bonjour,
Je souhaite récupérer les fichiers qui se trouvent dans la base couchdb une installation cozy v2 (ils étaient accessibles à des URLs telles que https://ABC/apps/files/files/dc710cdf1a46123bd53a745250007b9e/screen/20170730_203129.jpg etc.). Comment puis-je faire ? Je n’ai qu’un backup du disque, la machine ne tourne plus.

-rw-r--r-- 1 loic loic 6.9G Aug  3 18:47 cozy.couch

Merci par avance !

Alors il te faudra déjà avoir un CouchDB 1.6.x opérationnel. Par exemple via ce manuel.
Ensuite, tu remets ce fichier cozy.couch dans le répertoire des données de CouchDB (par défaut, /var/lib/couchdb).
Ensuite, ce petit script ruby t’exportera tes photos sur le disque :slight_smile: (Des motivé·es pour faire un portage en Python si besoin ? :smile: )

J’ai rebooté l’instance qui fait tourner cozy (le script se connecte au service donc c’est nécessaire). Apres avoir fait

  • apt-get install ruby ruby-dev
  • gem install typhoeus oj fileutils2

Et puis le script fail avec:

../a.rb:18:in `<main>': undefined method `collect' for nil:NilClass (NoMethodError)

Hum… Il se peut que l’URL du CouchDB ne soit pas correcte. Peut-être une authentification nécessaire ?
Est-ce que tu as quelque chose sur curl http://localhost:5984/cozy/_design/photo/_view/all ?

Pour l’éventuelle authentification, regarde si tu as un fichier /etc/cozy/couchdb.login. La 1ère ligne est l’utilisateur, la 2nde le mot de passe. Tente du coup curl http://<user>:<password>@localhost:5984/cozy/_design/photo/_view/all, et si tu as plus de données, corrige l’URL dans le script d’export.

Pour celleux qui ne veulent pas s’embêter à installer des langages kikoolol de hipsters, la version ne nécessitant que curl et jq pour exporter tous les fichiers de la base vers le disque :

CouchURL=$(sed -n '1,1p' /etc/cozy/couchdb.login):$(sed -n '2,1p' /etc/cozy/couchdb.login)@127.0.0.1:5984
curl -s -H 'Accept: application/json' "${CouchURL}/cozy/_design/file/_view/byfullpath | jq -r '.rows[].value | "\"."+.path+"/"+.name+"\" "+.binary.file.id' | xargs -n2 sh -c 'curl -s --create-dirs -o "$0" ${CouchURL}/cozy/$1/file'
4 Likes

Ca marche mieux en effet ! Il y a un problème quand le répertoire contient un espace mais apres avoir enlevé ce qu’il faut c’est bon. Merci !

Bonjour,

Dans couchdb.login, c’est login / mot de passe de l’utilisateur cozy, c’est bien ça ?

Hello,

Non, ce sont les identifiant de connexion à CouchDB. De mémoire, à l’installation de Cozy V2, on créait un compte avec les droits pour administrer CouchDB, et on mettait les informations de ce compte dans /etc/cozy/couchdb.login. La première ligne est l’identifiant de ce compte, la seconde le mot de passe.

Si tu veux supprimer ce compte et pouvoir accéder à CouchDB sans authentification (danger, danger, danger), il suffit de supprimer les dernières lignes du fichier /etc/couchdb/local.ini, après [admin].

ok merci, je vais essayer ça.