Konsolen-Befehl, um Dateien einzeln zu kopieren und gleich wieder zu löschen?

stolley

Aktives Mitglied
Thread Starter
Dabei seit
21.03.2009
Beiträge
736
Reaktionspunkte
16
Hi Leute!

Mein MBP ärgert mich mal wieder! Es stürzt ständig ab.
Das mal als Randbemerkung.

Auf jeden Fall möchte ich nun eine große Menge Daten (600GB) auf der Festplatte prüfen.
Und ich weiß, dass beispielsweise eine Möglichkeit wäre, die Dateien mittels Konsolenbefehl "cp" zu kopieren.
Dabei würde man zumindest feststellen, ob die Dateien kopiert werden können, oder nicht.

Nun fehlt mir allerdings der Speicherplatz, um solche Mengen an Dateien zu kopieren.
Daher dachte ich mir, es wäre gut, wenn man mittels Konsole die Dateien kopieren und gleich - nach jeder Datei - wieder löschen könnte.

Gibt es dafür einen oder mehrere Befehle?
Oder alternativ einen anderen Lösungsansatz?

Danke Euch!

Gruß
Volker
 
Es ist vielleicht einfacher irgendeine Hashfunktion über deine Dateien laufen zu lassen. Dabei sollten auch Dateisystemfehler/Platten-IO-Error erscheinen in der Konsole. Wenn du unbedingt kopieren willst, kannst du mittels cp auch in /dev/null kopieren.

Bin mir aber nicht sicher, ob dein Weg wirklich der "günstigste" ist um das festzustellen, was du feststellen willst. Wieso glaubst du, du hast silent corruption auf der Platte ohne einen Dateisystemfehler der mittels fsck anschlägt?
http://de.wikipedia.org/?title=/dev/null
 
nach /dev/null kopieren?
dann gehen die direkt ins daten nirvana, aber weiß gerade nicht, ob dann auch eventuelle öffnen/lese fehler vermeldet werden…
 
Ja, sollte gehen wenn "cat" den entsprechenden return code liefert:

Code:
if cat myfile > /dev/null 2>&1 ; then
         echo Datei ist ok
else
          echo Datei ist defekt
fi

Dann noch eine Schleife rein und es sollte gehen...
 
Es ist vielleicht einfacher irgendeine Hashfunktion über deine Dateien laufen zu lassen. Dabei sollten auch Dateisystemfehler/Platten-IO-Error erscheinen in der Konsole. Wenn du unbedingt kopieren willst, kannst du mittels cp auch in /dev/null kopieren.

Bin mir aber nicht sicher, ob dein Weg wirklich der "günstigste" ist um das festzustellen, was du feststellen willst. Wieso glaubst du, du hast silent corruption auf der Platte ohne einen Dateisystemfehler der mittels fsck anschlägt?
http://de.wikipedia.org/?title=/dev/null

Ähm, was ist denn eine Hash-Funktion?
Und hättest Du einen Tipp, welche ich nehmen soll?

Ich hege den Verdacht einfach aufgrund schlechter Erfahrungen. Und ich möchte nur ausschließen, dass mal wieder irgendetwas defekt ist.
 
Ja, sollte gehen wenn "cat" den entsprechenden return code liefert:

Code:
if cat myfile > /dev/null 2>&1 ; then
         echo Datei ist ok
else
          echo Datei ist defekt
fi

Dann noch eine Schleife rein und es sollte gehen...

Sorry, bin Konsolen-mässig nicht solo fit.
Was meinst Du mit Schleife? So eine Geschenkschleife?:p
 
Hash Funktion:
Bringt Dir nur etwas wenn Du schon den (bsp. md5 hash) der Dateien erstellt hast als die Dateien noch in Ordnung waren. Dann könntest Du diese nun mit der neu erstellen hashsum vergleichen.

Schleife:
for i in...

Lassen wir das.
Warum willst Du alles prüfen?
Dein System stürzt immer ab, also wirds wohl an den Systemdateien liegen (oder Programmen welche hier eingreifen - simpel ausgedrückt).
Mach nen Backup der kompletten Platte, System from scratch aufsetzen, das was Du brauchst wieder kopieren (Musik, Bilder,...)
Das wäre am schnellsten und gut ist.
 
Hash Funktion:
Bringt Dir nur etwas wenn Du schon den (bsp. md5 hash) der Dateien erstellt hast als die Dateien noch in Ordnung waren. Dann könntest Du diese nun mit der neu erstellen hashsum vergleichen.

Schleife:
for i in...

Lassen wir das.
Warum willst Du alles prüfen?
Dein System stürzt immer ab, also wirds wohl an den Systemdateien liegen (oder Programmen welche hier eingreifen - simpel ausgedrückt).
Mach nen Backup der kompletten Platte, System from scratch aufsetzen, das was Du brauchst wieder kopieren (Musik, Bilder,...)
Das wäre am schnellsten und gut ist.

Nein, bitte nicht lassen!

Die Abstürze haben 100%ig nichts mit Systemdateien zu tun.
Es liegt an der Grafikkarte, die ist defekt.

Hatte das Book deshalb schon bei Gravis.
Werde mir demnächst ein neues zulegen.
 
Sorry, bin Konsolen-mässig nicht solo fit.
Was meinst Du mit Schleife? So eine Geschenkschleife?:p

Könnte mir das jemand mit der Schleife in ein ausführbares Script wandeln?
Also mir den Code nennen?

Und wie mache ich daraus eine ausführbare Datei?
 
Code:
find . -type f -print0 | xargs -0 md5 -r >/tmp/MD5SUM && mv /tmp/MD5SUM .
 
Code:
find . -type f -print0 | xargs -0 md5 -r >/tmp/MD5SUM && mv /tmp/MD5SUM .

Cool, Danke!

Allerdings fällt mir auf, dass da etwas von MD5sum steht.
Kann es sein, dass das nur funktioniert, wenn man vorher diese MD5-Checksumme hergestellt hat??!
 
Cool, Danke!

Allerdings fällt mir auf, dass da etwas von MD5sum steht.
Kann es sein, dass das nur funktioniert, wenn man vorher diese MD5-Checksumme hergestellt hat??!

Nein. Probier es aus. Die stellst du mit dem Befehl her. find sucht die alle Dateien und gibt den Pfad aus, md5 erstellt die md5-Summen und schreibt sie in /tmp/MD5SUM. Der letzte Teil, mv, schiebt MD5SUM (Die Datei enthält alle erstellen m5-Summen mit Dateinamen) vom tempoären Ordner in dein aktuelles Verzeichnis, im Normalfall das Heimatverzeichnis.

Ich hab das mit den HashFunktionen vorgeschlagen, weil du auch so alle Dateien "anfasst" und komplett durchgehst, wie bei cp. Und die Hashfunktion md5 ist auch nicht wirklich rechenintensiv. Sollte also keinen unterschied zu deiner cp variante machen, nur das du keine Dateiberge kopierst, und als "Nebenereignis" in dem von Olivetti Fall eine Datei mit Hashes hast. Falls du nochmal deine Dateien vergleichen willst, kannst du so kontrollieren ob sie genau die gleichen sind.
 
Nein. Probier es aus. Die stellst du mit dem Befehl her. find sucht die alle Dateien und gibt den Pfad aus, md5 erstellt die md5-Summen und schreibt sie in /tmp/MD5SUM. Der letzte Teil, mv, schiebt MD5SUM (Die Datei enthält alle erstellen m5-Summen mit Dateinamen) vom tempoären Ordner in dein aktuelles Verzeichnis, im Normalfall das Heimatverzeichnis.

Ich hab das mit den HashFunktionen vorgeschlagen, weil du auch so alle Dateien "anfasst" und komplett durchgehst, wie bei cp. Und die Hashfunktion md5 ist auch nicht wirklich rechenintensiv. Sollte also keinen unterschied zu deiner cp variante machen, nur das du keine Dateiberge kopierst, und als "Nebenereignis" in dem von Olivetti Fall eine Datei mit Hashes hast. Falls du nochmal deine Dateien vergleichen willst, kannst du so kontrollieren ob sie genau die gleichen sind.

Herzlichen Dank für Eure Hilfe und die Erläuterungen!
Ich werde es ausprobieren!

Kann ich probehalber den "find"-Befehl nur auf einen bestimmten Ordner anwenden?

Sorry, ich lerne noch...! :d
 
der befehl, wie der da so steht, macht es eh nur auf dem aktuellen verzeichnis.
dafür steht halt der punkt.
du kannst statt dem punkt ja auch einen anderen pfad angeben…
 
Was bringt es jetzt einen md5 hash der Dateien zu ermitteln wenn er wissen will welche Dateien evtl. corrupt sind?
Dazu sollte er schon früher, als die Dateien noch ok waren, einen md5 hash haben um diese dann zu vergleichen.
Und die sind dann, nach jedem Update auch wieder hinfällig...
 
Was bringt es jetzt einen md5 hash der Dateien zu ermitteln wenn er wissen will welche Dateien evtl. corrupt sind?
Dazu sollte er schon früher, als die Dateien noch ok waren, einen md5 hash haben um diese dann zu vergleichen.
Und die sind dann, nach jedem Update auch wieder hinfällig...

Nichts. Das kann er nur sicher wissen, wenn er jede Datei öffnen und 100% "benutzt". IMHO ist das was er will, er will wissen ob der darunterliegende Datenträger badblocks hat, die vorher nicht da waren. Sonst kann man nicht viel feststellen mit HFS+ / Seiner Methode..
 
Hi!

Jetzt habe ich den Befehl mal in einem kleinen Verzeichnis angewendet.
Aber die Checksum-Datei finde ich nicht.

Und das Verzeichnis /tmp/MD5SUM scheint es auch nicht zu geben...

Komisch, oder?!
 
Was hast du denn *genau* eingegeben?

Und zeig' mal:
Code:
ls -l /tmp/MD5SUM
Evtl. liegt sie ja noch dort.

Und bezgl. badblocks weise ich mal hier hin.
 
Nichts. Das kann er nur sicher wissen, wenn er jede Datei öffnen und 100% "benutzt". IMHO ist das was er will, er will wissen ob der darunterliegende Datenträger badblocks hat, die vorher nicht da waren. Sonst kann man nicht viel feststellen mit HFS+ / Seiner Methode..

checksum würde was bringen wenn er alte hätte mit denen er die neuen vergleichen könnte und sicher wäre, dass die Dateien sich nicht geändert haben.
Wenn man badblocks erkennen will, dann muss man anders vorgehen, je nach FS-type.
 
Naja, mit md5 krault er ja die Dateien auch komplett durch und würde i/o-error kriegen und so hat er dann halt mal checksums.

Wenn er es richtig machen will, muss er "fsck_hfs -S dev" machen oder gleich ein richtiges badblocks (Link in #18) laufen lassen.
 
Zurück
Oben Unten