Comment puis-je copier partiellement un fichier à partir d'un disque cassé?

10

J'ai un disque cassé d'où je dois copier un fichier 60G.

De temps en temps, le disque se réinitialise et je ne peux pas terminer la copie.

Je voudrais essayer de copier des tranches partielles et de les rassembler.

Comment puis-je faire ceci?

nsn
la source
La méthode à l'ancienne (old school) serait d'utiliser dd.
G-Man dit `` Réintègre Monica ''
1
Une autre option consiste à utiliser par exemple split -b[bytes] yourbigFile
Valentin Bajrami
3
Si vous essayez de copier le fichier à partir d'un mauvais disque, alors - ddrescueou non - vous vous y trompez probablement. Parce que le fichier dépend du système de fichiers et parce que le fichier n'est probablement pas contigu, alors faire les lectures pour l'obtenir à partir du périphérique défectueux va presque certainement nécessiter plus de recherche de disque que vous ne pouvez vous le permettre facilement. Je ferais une image du périphérique de bloc sur un bon périphérique connu aussi près que possible d'un seul passage, et concentrerais ensuite les efforts de récupération sur le fichier image monté autant que possible.
mikeserv

Réponses:

14

Utilisation ddrescue, conçue pour ce type de scénario.

Il utilise un fichier journal pour garder une trace des parties des données qu'il a copiées avec succès - ou autrement. Par conséquent, vous pouvez l'arrêter et le redémarrer autant de fois que nécessaire, à condition que le fichier journal soit conservé.

Voir Ddrescue - Outil de récupération de données

roaima
la source
4

Utilisez dd.

Cela peut faire beaucoup, mais vous avez besoin du formulaire suivant:

dd if=<source> of=<destination> bs=<block size> count=<blocks> skip=<offset>

Par exemple, pour copier le 2e au 4e kilo-octet à partir d'un fichier, vous feriez:

dd if=in.dat of=out.dat bs=1K count=2 skip=2

Étant donné les détails de ce que vous essayez de faire, vous pouvez également essayer d'ajouter conv=sync,noerror:

dd if=in.dat of=out.dat bs=1K count=2 skip=2 conv=sync,noerror

Le noerrorfait essayer de continuer quand il rencontre une erreur, et le syncfait remplir les blocs en échec avec des zéros. Donc, idéalement, vous obtiendrez le fichier que vous voulez, mais avec des zéros pour les blocs, il ne pourrait pas être lu. Cependant, cela dépend de votre disque dur ce qu'il fera réellement. Certains disques durs s'arrêtent simplement lorsqu'ils voient une erreur, puis vous n'obtiendrez toujours pas vos données.

marinus
la source