破損したホームディレクトリの強制コピー

破損したホームディレクトリの強制コピー

ディスクに破損したファイルが多いホームディレクトリがあります。できるだけ多くのファイルを保存しようとしています。次のコマンドを使用して、外部ドライブにホームディレクトリのバックアップを作成しようとします。

tar -cvf backup /home/myHome

そしてまた試した

rsync -vfh /home/myHome /media/backup

破損したファイルが見つかると、両方の方法が停止します。コピーを続行し、間違ったファイルを無視し、可能なすべてをコピーし、コピーされていないファイルの最後にログを表示するように強制する方法はありますか?

ありがとうございます。

答え1

外付けドライブに十分なスペースがある場合は、回復不能なセクタをスキップしてパーティション全体のコピーを実行してください。それでは、コピーして電話してみfsckてください。

障害が発生したドライブからパーティションをコピーするには、次を使用します。myrescueまたはこれが十分に柔軟ではない場合ddrescueまたはdd_rescue。これらのツールはすべて、読み取り不可能な領域をスキップするか、繰り返し読み取りが機能する可能性があるか(光学メディアやフロッピーディスクなど)に応じて調整するか、逆に故障したドライブをより速く摩耗させます(たとえば、ほとんどのハードドライブ)。ドライブエラー))。また、見ることができます故障したドライブのデータ保存破損したSDカードからデータを回復する方法は?

sudo myrescue /dev/sda42 >/media/backup/home.raw
cp /media/backup/home.raw /media/backup/home.recovering
/sbin/fsck -f /media/backup/home.recovering
sudo mount -o loop /media/backup/home.recovering /mnt
cp -a /mnt /media/backup/home.saved

答え2

私はこれのために小さなスクリプトを書いた

#!/bin/bash
echo "copying from $1"

find $1 -type f -print0 | while read -d $'\0' -r file ; do
    echo Processing "$file"
    target="$2""$file"
    if (test -f "$target") then
        echo File Exists:  "$target"
    else
        echo copying to "$target"
        targetDir=`dirname "$target"`

        if (! [ -d "$targetDir" ]) then
            mkdir "$targetDir"
        fi

        ddrescue -e0 -r0 -v -n "$file" "$target"
        if ([ $? -ne 0 ]) then
            echo Copy failed, deleting "$target"
            rm -f "$target"
        fi
    fi
done

答え3

まず、rsync -aHv--- を使用することは、rsync -vfh目的の操作には適していません。

rsyncには使用可能な--ignoring-existingフラグがあります。rsync -aHv --ignore-existingI / Oエラーで終了するまで実行します。失敗したファイルの名前を記録し、rsyncが機能した場合は、コピーする外部ドライブに空のバージョンのファイルを作成します。 --ignore-existing を使用して rsync コマンドを再実行すると、失敗したファイルのコピーは試行されなくなります。 rsyncが他のすべてをコピーすることを望みますが、再び停止した場合はプロセスを繰り返します。 rsyncが完了するまで繰り返します。

答え4

cpio -ivd -H tarコマンドの使用

マンページには次の内容があります。

これにより、ディレクトリ.cpioファイルに保存されているファイルが検索され、現在のディレクトリに配置されます。 「-i」オプションはアーカイブを抽出し、「-v」は抽出されたファイル名を表示します。アーカイブディレクトリツリーを扱う場合は、「-d」オプションを使用して必要に応じてディレクトリを作成する必要があります。

-H は形式を示します。

バラよりこれそして これ

関連情報