Kategorien
Tipps & Tricks

Datenrettung mit foremost

Foremost eignet sich hervorragend, um bereits gelöschte Dateien wieder herzustellen.

Schritt 1

Installiere auf deinem Linuxsystem foremost mit:

# apt install foremost

Schritt 2

Lasse nun foremost laufen. Foremost durchsucht nun das Dateisystem und legt alle gefunden Dateien (hier jpg-Bilder) unter dem Ordner /output ab. Bedenke dabei, dass dies lange dauern kann. Meine 1 TB Festplatte dauerte rund 2.5 Stunden. Dabei fand foremost rund 950“000 Bilder mit einem Volumen von nahezu 85 GB. Prüfe vorher, ob /output also genügend freien Speicher besitzt!

# foremost -t jpg -i /pfad/zur/partition/sdbX

in diesem Beispiel durchsucht foremost also die angeschlossene Festplatte unter /pfad/zur/partition/sdbX und gibt alle gefundenen jpg-Bilder in /output aus. X und der Pfad müssen angepasst werden.

Schritt 3

Da foremost unter root lief, sind wir als normaler Benutzer noch nicht befugt, die gefundenen Bilder zu bearbeiten. Mit:

# chown -c -R BENUTZER /pfad/zu/output/

ändern wir die Rechte so, dass BENUTZER nun ohne root auf die Bilder zugreifen kann.

Schritt 4

Bilder unter 50 kB sind in der Regel Thumbnails oder Icons, welche getrost ignoriert werden können. Da wir jetzt einen Ordner mit vielen Bildern haben, macht es Sinn, einige davon zu löschen. In diesem Beispiel löschen wir alle Bilder unter /output, welche kleiner als 50 kB sind:

find /pfad/zu/output -type f -size -50k -exec rm -f {} \;

Schritt 5

Unser Ordner hat aber immer noch sehr viele Bilder. Versuchen wir den Ordner mit einen Dateimanager zu öffnen, dauert das Erstellen der Vorschaubilder ewig. Nun splitten wir den Ordner /output so auf, dass sich jeweils 1000 Bilder in einem Unterordner befinden. Erstelle unter /output mit nano eine Datei (z.B. meinscript.sh)

nano -w meinscript.sh

und füge nun folgenden Code ein:

#!/bin/bash
target=“$RANDOM“_“$RANDOM“_“$RANDOM“
mkdir „$target“
mv -t „$target“/ „$@“

das Script muss noch ausführbar gemacht werden mit:

chmod +x meinscript.sh

Mit dem printf-Befehl:

printf "%s\0" *.jpg | xargs -0 -n 1000 ./meinscript.sh

splitten wir nun den gesamten Ordner auf. Dabei landen exakt immer 1000 Bilder in einem entsprechenden Unterodner. Nun können wir die gefundenen Bilder in akzeptabler Zeit durchscrollen.

Hinweis

foremost findet jedoch nicht nur Bilder und ist durchaus in der Lage, weitere Formate zu finden. Dazu einfach den entsprechenden Schalter anwenden. Weiter Infos findest Du hier

foremost -t all -i /pfad/zur/partition/sdbX

Dieser Befehl durchsucht die gesamte Festplatte oder Partition nach allmöglichen Dateien. Doch Vorsicht: unbedingt prüfen, ob /output genügend freien Speicher besitzt. Eine 1 TB Festplatte kann unter Umständen auch knapp 1 TB an Dateien liefern!

Kategorien
Tipps & Tricks

bootfähiger USB-Stick

Vorsicht! Alle Daten auf dem Stick werden gelöscht. In diesem Beispiel wird der Memorystick unter /dev/sdc eingehängt. Achte darauf, den richtigen mount point zu benutzen!

01. Starte fdisk mit:

# fdisk /dev/sdX

Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): 

02. fdisk erwartet von uns nun eine Eingabe. Mit p zeigen wir uns alle existierenden Partitionen auf dem Stick an. Tippe also p und drücke auf Enter:

Command (m for help): p
Disk /dev/sdc: 3.7 GiB, 3910041600 bytes, 7636800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xddd96107

Device     Boot Start     End Sectors  Size Id Type
/dev/sdc1        2048 7634943 7632896  3.7G  7 HPFS/NTFS/exFAT

03. auf /dev/sdc1 existiert bereits eine 3.7 GB grosse ntfs-Partition. Diese ist jedoch für ein Live-System nicht geeignet. Also weg damit:

Command (m for help): d /dev/sdc1
Selected partition 1
Partition 1 has been deleted.

04. diesen Vorgang so lange wiederholen, bis p keine Partitionen mehr anzeigt. Erst jetzt können wir den Stick vorbereiten. Mit n legen wir eine neue Partition an.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-7636799, default 2048): (drücke hier Enter)
Last sector, +sectors or +size{K,M,G,T,P} (2048-7636799, default 7636799): (drücke hier Enter) 

Created a new partition 1 of type 'Linux' and of size 3.7 GiB.

Command (m for help): 

05. Um den Stick als Live-System nutzen zu können muss er in FAT32 formatiert werden und bootbar sein.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): c
If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information.
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

06. zuletzt setzten wir mit a die Partition auf bootbar:

Command (m for help): a
Selected partition 1
The bootable flag on partition 1 is enabled now.

07. letzte Kontrolle, ob alles so ist, wie es sein soll:

Command (m for help): p
Disk /dev/sdc: 3.7 GiB, 3910041600 bytes, 7636800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xddd96107

Device     Boot Start     End Sectors  Size Id Type
/dev/sdc1  *     2048 7636799 7634752  3.7G  c W95 FAT32 (LBA)

Das war’s. Du hast nun einen bootfähigen USB-Stick. Das „bootable flag“ kann übrigens auch im Nachhinein gesetzt werden, falls z.B. ein *.iso-Abbild per dd auf den Stick kopiert wurde.

Kategorien
Tipps & Tricks

ein einfaches Shell-Script

Shellscripte (hier ein Bash-Script) sind einfache Textdateien, welche im Terminal (also z.B. der Bash) ausgeführt werden können. Auf diese Weise können oft gebrauchte Befehle automatisch ausgeführt werden. In diesem Beispiel erstellen wir ein Script, welches Rechenaufgaben stellt. Das Script läuft erst dann weiter, wenn die richtige Eingabe getätigt wurde. Obwohl folgendes Beispiel eher für den absoluten Einsteiger gedacht ist, zeigt es auf einfachste Weise, was Sinn und Gedanke hinter der Shell-Programmierung ist…

Schritt 1 öffne das Terminal und erstelle mit

nano -w rechnen.sh

eine leere Datei. Füge nun folgenden Quellcode ein:

#!/bin/bash
clear
echo "meine erste Frage: Was ergibt 17 + 31"
echo ""
while true
  do
    read -p "Antwort: " answer
    case "$answer" in 48)
         echo das war richtig
          break
          ;;
      *) echo leider falsch... nochmals!
          ;;
    esac
done
echo ""
echo ""
echo "zweite Frage: Was ergibt 71 - 49"
echo ""
while true
  do
    read -p "Antwort: " answer
    case "$answer" in 22)
         echo das war ebenfalls richtig
          break
          ;;
      *) echo leider falsch... nochmals!
          ;;
    esac
done
echo ""
echo ""
echo "letzte Frage: Was ergibt 14 * 4"
echo ""
while true
  do
    read -p "Antwort: " answer
    case "$answer" in 56)
         echo das war richtig. Vielen Dank für die Teilnahme.
          break
          ;;
      *) echo leider falsch... nochmals!
          ;;
    esac
done

Schritt 2 nach dem Abspeichern muss die Datei noch ausführbar gemacht werden. Dazu genügt ein:

# chmod +x rechnen.sh

Schritt 3 mit

./rechnen.sh

kann das Script nun gestartet werden.

meine erste Frage: Was ergibt 17 + 31

Antwort: 48
das war richtig


zweite Frage: Was ergibt 71 - 49

Antwort: 22
das war ebenfalls richtig


letzte Frage: Was ergibt 14 * 4

Antwort: 56
das war richtig. Vielen Dank für die Teilnahme.