iPhoto: Bilder werden nicht gefunden nach Umbenennung der Festplatte

ratti

ratti

Aktives Mitglied
Thread Starter
Dabei seit
09.05.2004
Beiträge
1.521
Reaktionspunkte
56
Hallo,

ich habe sehr viele Fotos im aktuellen iPhoto. Die Library liegt auf einer externen Festplatte, und dort liegen nebenan auch die Fotos selbst. Ich habe iPhoto so eingestellt, dass Fotos nicht in die Library kopiert werden.

Aufgrund des Umfanges der Sammlung sichere ich die Daten nicht per TimeMachine, sondern per rsync auf eine zweite externe Festplatte. Dort gibt es also die gleiche Library und den gleichen Ordner „fotos“.

Jetzt möchte ich gern mit der Kopie weiterarbeiten.


Das Problem ist: Ich kann zwar auf die andere Library wechseln. iPhoto sucht die Fotos aber nach wie vor im Pfad /Volumes/ErsteFestplatte/fotos/ , und nicht unter /Volumes/ZweiteFestplatte/fotos . Ich kann mit der zweiten Library nur vorrübergehend arbeiten, indem ich temporär die erste Festplatte auswerfe und die zweite Festplatte umbenenne in „ErsteFestplatte. Das kann's ja irgendwie nicht sein. Ich möchte gern zukünftig beide Libraries unabhängig voneinander benutzen (es wird dann ein neues Backup geben).

Nicht in Frage kommt: Irgendwelche Klimmzüge wie „exportier doch alles auf die zweite Platte“ oder dergleichen, der „fotos“-Ordner enthält zusätzliche Dateien wie Geotrack-Dateien oder RAW-Files und soll nicht verändert werden. Ebenfalls nicht in Frage kommt das immer-wieder-umbenennen der Festplatten.

Mir schwebt da eher vor, dass es in der iPhoto-Library vielleicht irgendwelche mysqli-Dateien gibt, wo man den Pfadnamen mit einem Query updaten kann oder so…?

Ich habe schon versucht, in /Volumes einen Softlink anzulegen, weil iPhoto beim Beenden gerne mal einen länger dauernden Balken zeigt, die Ortsinformationen würden jetzt upgedated, und ich hatte die Hoffnung, ich könne mit „ln -s ZweiteFestplatte ErsteFestplatte“ die Fotos auffindbar machen, damit iPhoto den Pfad danach auflöst und aktualisiert — Pustekuchen. Leider nein.

Kann jemand helfen?

Danke im vorraus,
Jörg
 
das Problem ist, dass iPhoto nicht für deine Art der Verwendung gedacht ist. Weder unterstützt iPhoto die Arbeit mit mehreren Katalogen noch kannst du die nur verknüpft importierten Bilder einfach kopieren. iPhoto trägt sich den vollen Pfad zum Bild ein (es sei denn er würde es selbst in der Mediathek verwalten)
Du kannst dir also aussuchen ob du a) deine Bilder importierst und sie innerhalb der Mediathek von iPhoto verwalten lässt oder b) dir eine professionelle Bildverwaltung wie Adobe Lightroom zulegst mit der du dann auch mehrere bzw. verteilte Kataloge haben kannst.
 
Hallo,

Weder unterstützt iPhoto die Arbeit mit mehreren Katalogen

Doch, kann es. Entweder einfach den Katalog doppelklicken, oder iPhoto mit Alt-Taste starten, dann kommt eine Auswahlbox. Im Gegensatz zu früher befinden sich alle Einstellungen auch im Katalog selber, die geraten sich also Null ins Gehege.

In älteren iPhoto-Versionen gabe es im Fehlende-Bilder-Dialog auch eine Option für Massenzuweisungen, die solche Probleme über relative Pfade korrigiert hat. Die ist leider bei einem der Rewrites verlorengangenen.

Last but not least: Diverse Google-Funstellen legen nah, dass man das auch in der Datenbank selbst fixen kann. Da ich mit MySQL Erfahrung habe, würde ich mit durchaus einen Versuch zutrauen, falls das z.B. mysqli ist. Ich will nur nciht blind drauflos, das Problem ist ja technisch an sich trivial, und ich kann mir nicht vorstellen, dass ich der einzige bin: Platte defekt, neue Platte, neuer Name, und schwupps hat man das Problem. Muss ja lösbar sein.

Gruß,
Jörg
 
Zwischenstand:

Ich habe einfach mal geguckt, was in so einer Mediathek so drinliegt:

Code:
find /Users/ICH/Pictures/iPhoto-Mediathek.photolibrary -type f -print0 | xargs -0 -I % file %

Das findet diverse sqlite3-Dateien, und tatsächlich liess sich mit dem sqlite3-executable und dem .dump-Kommando gut in die Dateien reinspannern. Wenn man jetzt weiss, dass man sqlite3 braucht, hat man mit „iphoto sqlite3“ jetzt auch die Suchbegriffe für eine gezielte Google-Suche zur Hand.

Gleich die erste Fundstelle https://discussions.apple.com/thread/3216539 listet dann so was auf:
I was using the sqlite console client using a query like this to update my database entries to move all files on the external Volume to the local drive:

Code:
update RKMaster set imagePath = replace(imagePath,'Volumes/ExternalVolume','Volumes/<Destination>')   where imagePath like '%ExternalVolume/%';

Ich werde jetzt nicht mitten in der Nacht an einer Datenbank rumschrauben, aber das ist der Weg.
 
So. Schaun wir mal…:

Code:
sqlite3 /Volumes/FettplatteZwei/iPhoto\ Library/Database/apdb/Library.apdb

Erst mal gucken, was da so drin steht, und, große Überraschung, es gibt absolute und relative Pfade!

Code:
select imagePath from RKMaster;

Einige Zeilen sehen so aus:
Code:
/Volumes/FestPlatteEins/Fotos/2010_04_11/IMG_0074.JPG

…und andere so:

Code:
Fotos/2012_04_08/IMG_0096.JPG

Letzteres wäre eine Universal-Lösung, weil man das Problem dann nie wieder hätte. Da ich an meinen Ordnernamen häufig erkennen kann, wann die Fotos gemacht wurde, würde ich sagen: Irgendwann 2011 hat Apple das geändert (gut), ohne vorhandene Pfade zu konvertieren (doof).

Anders als geplant werde ich daher nicht den neuen Festplattennamen einsetzen, sondern versuchen, all Pfade auf „relativ“ zu patchen.

Code:
update RKMaster set imagePath = replace(imagePath,'/Volumes/ErstePlatte/','')   where imagePath like '/Volumes/ErstePlatte/%';

Das hat nicht geklappt. Trotz „richtigem“ Pfad wurden die Dateien nicht gefunden. Keine Ahnung, was Apple da treibt, aber es muss zusätzlich die Volume-ID gesetzt werden. Zu diesem Zweck habe ich einen Screenshot importiert, aus der Datenbank dann dessen Volume-ID geholt und diesen Wert überall eingetragen:

Code:
update RKMaster set fileVolumeUuid="OQbD0WKbSFGMVUw8K3YN5w";

Jetzt ist alles wieder heile.

Durch den Blödsinn mit der Volume-ID ist es leider nicht möglich, in Zukunft vom relativen Pfad profitieren zu können, indem Kopien der Mediathek sofort überall funktionieren — aber immerhin, der Eingriff ist minimal.

Gruß,
Jörg
 
Nachtrag 2:

„Bei der Gelegenheit“ habe ich dann alles noch in einen Unterordner verschoben, wieder Probleme gehabt und jetzt auch kapiert, wie die VolumeID da reinspielt. Der Pfad ist mitnichten relativ, sondern absolut — es wird aber der Teil /Volumes/blabla weggelassen, der wird durch die VolumeID repräsentiert.

Hat man also als imagePath in der Datenbank stehen „blah/blaeh/blubb/image1.jpg“ und der VolumeID „gKJGFGHFggG“, dann sucht iPhoto die Bilder unter:

/Volumes/{VolumeMitDerID['gKJGFGHFggG']}/blah/blaeh/blubb/image1.jpg

…und leider nicht relativ zur Mediathek. Das wär noch mal geil.

Ich glaub, jetzt bin ich glücklich. :-D

Danke für's zuhören,
Jörg
 
Zurück
Oben Unten