Archiv

Artikel Tagged ‘bash’

kostenlose Linux E-Books

13. April 2009

Bilder im JPEG-Format nach Größe und EXIF-Informationen sortieren und umbenennen

28. August 2008

Nach der wegen meiner eigenen Doofheit fälliggewordenen Datenrettungsaktion habe ich nun eine Unmenge unsortierter Fotos im JPEG-Format auf der Platte.

Wenn schon meine Doofheit Schuld an dieser Lage ist, muss ich halt etwas mehr Gehirnschmalz investieren, um dieser einigermaßen Herr zu werden.

Eins ist von vornherein klar: Ohne eine automatische Sortierung komme ich nicht weiter.
Zum Glück hat Linux ja schon alles „an Bord”, was ich dafür brauche.

Hauptsächlich geht es mir ja um meine selbst aufgenommenen Fotos. Daher habe ich mich entschieden, die Bilder zuerst einmal nach der Angabe des Kameramodells in den EXIF-Tags in verschiedene Verzeichnisse zu sortieren und die Dateien jeweils anhand des ebenfalls per EXIF in der Datei enthaltenen Aufnahmedatums umzubenennen.

Wenn keine EXIF-Informationen in der Datei vorhanden ist, wird sie entsprechend ihrer Bildgröße in einen Ordner einsortiert.

Dies erledigt das folgende kleine Bash-Skript (quick&dirty, aber ich stelle es hier dennoch rein, für den Fall, dass es noch jemand anderem behilflich sein kann):
Mehr…

Computer, Linux, Software , , , , ,

Aargh! Der Daten-Super-GAU ist eingetreten…

5. August 2008

Und ich bin auch noch selbst Schuld…

Letzte Nacht habe ich im Halbschlaf versucht, zusätzlich Windows auf meinem Linux-Rechner zu installieren.

Resultat: Versehentlich die falsche Platte, nämlich meine Datenplatte (vorher XFS-Dateisystem), mit NTFS überformatiert…

xfs_repair(8) konnte jedoch zum Glück nach längerer Suche den „secondary superblock” ausfindig machen und etliche Dateien wiederherstellen. Allerdings hat die Verzeichnisstruktur ziemlich gelitten und viele der Dateien liegen jetzt einfach „durchnumeriert” im Verzeichnis lost+found. Das sind jetzt so ca. dreizehntausend Einträge in dem Verzeichnis. Kann etwas dauern, bis ich die durchforstet hab…

Nachtrag (6.8.2008) — jetzt auch noch ein Hardwareausfall…
(…und ich bin nicht Schuld)

Als ob das noch nicht genug gewesen wäre…: Jetzt hat es auch noch meine Systemfestplatte gerissen. Allerdings ist es diesmal wohl ein Hardwaredefekt (zumindest ist der S.M.A.R.T.-Status schlecht). Zum Glück war da nichts Wichtiges drauf… Da Western Digital auf die Platte 5 Jahre Garantie gegeben hat, hoffe ich natürlich auf Ersatz.

Hier ist ein Ausschnitt aus dem Ergebnis von smartctl -a /dev/sda:

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Caviar RE Serial ATA series
Device Model:     WDC WD5000YS-01MPB0
Serial Number:    WD-WMANU1697511
Firmware Version: 07.02E07
User Capacity:    500.107.862.016 bytes
[...]

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
See vendor-specific Attribute list for failed Attributes.

[...]
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   195   195   051    Pre-fail  Always       -       9053
  3 Spin_Up_Time            0x0003   226   223   021    Pre-fail  Always       -       5675
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       635
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   200   200   051    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       5689
 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   100   100   051    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       630
194 Temperature_Celsius     0x0022   253   253   000    Old_age   Always       -       50
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   192   192   000    Old_age   Always       -       678
198 Offline_Uncorrectable   0x0010   194   194   000    Old_age   Offline      -       518
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0009   001   001   051    Pre-fail  Offline  FAILING_NOW 19251

SMART Error Log Version: 1
ATA Error Count: 283 (device log contains only the most recent five errors) [...]

Error 283 occurred at disk power-on lifetime: 5689 hours (237 days + 1 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 1e 62 c1 e0  Error: UNC 8 sectors at LBA = 0x00c1621e = 12673566

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 00 08 1e 62 c1 35 00      20:11:28.146  READ DMA EXT
  27 00 00 00 00 00 00 00      20:11:28.146  READ NATIVE MAX ADDRESS EXT
  ec 00 00 00 00 00 00 00      20:11:28.137  IDENTIFY DEVICE
  ef 03 46 00 00 00 00 00      20:11:28.130  SET FEATURES [Set transfer mode]
  27 00 00 00 00 00 00 00      20:11:28.130  READ NATIVE MAX ADDRESS EXT
[...]

Nachtrag 2 (7.8.2008) — Dateien nach Typ sortieren (trotz fehlender Dateiendung)

Um mir das Sortieren der von xfs_repair(8) nach lost+found verschobenen Dateien etwas zu erleichtern, habe ich ein kleines Shell-Skript geschrieben, welches die Dateien entsprechend ihren Typs in ein anderes Verzeichnis verschiebt. Da zusammen mit den Dateinamen auch die Dateinamenserweiterung verlorengegangen ist, muss dies mit file(1) anhand der „magic numbers” geschehen.

#!/bin/bash
for F in *;
	do MAGIC=`file "$F"`;
	if [[ $MAGIC =~ "JPEG" ]]; then
		echo $MAGIC;
		mv "$F" /mnt/tera/restore/bilder/
	fi
done;

Computer , , , , , , ,