死にかけているハードディスクのファイルを救済する方法

このQ&Aのポイント
  • 死にかけているハードディスクに入っているファイルを取り出す方法について解説します。
  • 再帰的にサブディレクトリーも含めてファイルを別のHDDに保存する方法を紹介します。
  • 読み出し途中でI/O Errorがあった場合は即座に次のファイルに進み、諦めたファイルのパスとファイル名は表示します。
回答を見る
  • ベストアンサー

死にかけているハードディスクに入っているファイルの

死にかけているハードディスクに入っているファイルの救済の質問です。 パーティションはXFSです。 1) HDDのファイル中、読めるものは取り出したいです。 2) サブディレクトリーも含めて、再帰的に別のHDDへ保存 3) 読み出し途中でI/O Errorがあった場合は、直ぐに諦めて次のファイルに進む 4) 3)の諦めたファイルのパスとファイル名は表示する。 上記  1)~4)をすべて満足するコマンドを調べたところ、rsyncが有る事を知りました。 --ingnore-errorsを指定するとの事ですが、" -e, --rsh=COMMAND"を解説する場所と単独で、解説する場合の2箇所に 登場しており、使い方が分からなくなってしまいました。 コピー元 /mnt/baddrive コピー先 /mnt/gooddrive とし、コピー経過とErrorを copy.log に保存していく場合、下記でよろしいでしょうか。 rsync -av --ingnore-errors /mnt/baddrive/ /mnt/gooddrive/ 2>&1 | tee copy.log

質問者が選んだベストアンサー

  • ベストアンサー
  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 --ingnore-errorsはI/Oエラー時にコピー先(同期先)のファイルを削除するかどうか、という指定となります。 >--ignore-errors delete even if there are I/O errors 単純に以下のように実行頂ければ問題ないと思います。 rsync -av /mnt/baddrive/ /mnt/gooddrive/ 2>&1 | tee copy.log

参考URL:
http://linux.die.net/man/1/rsync

その他の回答 (1)

  • umimonogat
  • ベストアンサー率50% (798/1579)
回答No.2

Linux OS Ubuntu のデータ救出は如何でしょうか! http://www.pc-master.jp/trouble/ubuntu.html

関連するQ&A

  • rsyncのPermission denied

    CentOS6.3にて rsync -avvz root@172.30.1.21:/mnt/iptables/ /mnt/nas/iptables/ を実行しました。ログとして以下のものが出力されました。 <ログ> opening connection using: ssh -l root 172.30.1.21 rsync --server --sender -vvlogDtprze.iLs . /mnt/iptables/ root@172.30.1.21's password: receiving incremental file list delta-transmission enabled (1)rsync: chgrp "/mnt/nas/iptables/." failed: Permission denied (13) <質問1> (1)の意味がわからないのですが、rsyncは何をしようとしてなぜパーミッションエラーが出ているのでしょうか?  ・root@172.30.1.21:/mnt/iptables/ は、別サーバのNFSをマウントしています。  ・/mnt/nas/iptables/ は、NASドライブをcifstestユーザでマウントしています。  【コマンド:mount -t cifs //NASのIP/cifs/ /mnt/nas/iptables/ -o username=cifsuser,iocharset=utf8,codepage=932】  (NASにrootユーザが作れなかったため)  ・rsync実行時は、rootユーザー。 になります。 <質問2> ただ、パーミッションエラーが出てたのですが、以下ログが出力されており、 データのコピーが完了していました。 total: matches=0 hash_hits=0 false_alarms=0 data=3999447313 sent 546 bytes received 493957830 bytes 1123909.84 bytes/sec total size is 3999426304 speedup is 8.10 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [generator=3.0.6] ためしにコピーされた一つのコピー元ファイル と コピー後のデータをdiffしてみた所 エラーも出ませんでした。サイズも一緒。 これは正しくコピーできていると信じていいのでしょうか? ご教授おねがいします。

  • ファイルのコピー

    毎日、3つのファイル (この質問では1つとします) をコピーするのですが、簡単にしたいと思っています。 1. c:\log\log.2008-07-25 という名前のファイル (日付は昨日の日付) 2. c:\20080725\log というフォルダ (日付は昨日の日付) 1のファイルを2のフォルダ内にコピーしたいです。 ファイル名やフォルダ名の日付部分は、昨日の日付なので、毎日変化します。 調べたところ、メモ帳で以下のように書いて、copy.cmdなどという名前で保存すればいいというところまでは分かりましたが、日付の変化に対応できません。 copy c:\log\log.2008-07-25 c:\20080725\log これに加え、毎日、同じ時間にこのスクリプトを自動実行できればさらにいいと思っています。可能でしょうか。 宜しくお願い致します。

  • bash: tee: command not found

    玄箱の本(P155)を読みながら進めていったのですが、以下のエラーがでて 原因が分からず先に進めません>< どうすればよろしいのでしょうか?教えてください。。。 root@KURO-BOX:/mnt/share/src/GNU/coreutils-5.2.1# make 2>&1 | tee make.log bash: tee: command not found

  • Carbon Copy Cloner Error code: 51

    MacBookProをCarbon Copy Clornerで外付けのHDDにBackUp(4回)しました。4回とも同じ問題で止まってしまいました。 ”最終段階でバックアップ中に問題が発生しました。” Error code: 51 でCompleteしません。 環境はOS Tiger 10.4.11, 外付けのHDDはLaCie 160GBでFirewireで接続しています。 以下にlogの問題があると思われる箇所をコピーします。 是非、解決策を教えてください。 お願いいたします。 --------------copy------------------ 16:22:34 Warning user about performing a destructive action. 16:22:36 User chose to proceed with destructive action. 16:22:36 コピー先ボリュームの所有権を有効にしています... 16:22:43 コピー先ボリュームの所有権が有効になりました。 16:22:43 コピー先ボリュームのアクセス制御リストが有効になりました。 16:22:43 コピー元ボリュームへの排他アクセスを確認しています... 16:22:43 Aborting block-level clone, starting over with file-level clone. 16:22:43 検証しています... 16:22:43 同期エンジンを初期化しています... 16:22:44 クローンを作成しています... 18:00:24 CCC はコピー先ボリュームのアクセス制御リストを有効にすることができませんでした。 18:00:26 CCC はコピー先ボリュームのアクセス制御リストを有効にすることができませんでした。 18:03:11 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /Volumes/Home/Users/bombich/Development/Bombich_Software/rsync-3.0.5pre2/main.c(1047) [sender=3.0.5pre2] (51) 18:03:12 rsync: バックアップ中に問題が発生しました。, Error code: 51 18:03:13 Sync Engine warnings: ( "rsync: set_acl: sys_acl_set_file(Volumes/iDisk, ACL_TYPE_EXTENDED): Operation not supported (45)", "rsync: set_acl: sys_acl_set_file(Volumes/iDisk, ACL_TYPE_EXTENDED): Operation not supported (45)", "rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /Volumes/Home/Users/bombich/Development/Bombich_Software/rsync-3.0.5pre2/main.c(1047) [sender=3.0.5pre2]" ) ================================================================================

    • ベストアンサー
    • Mac
  • robocopyでコピー元のファイルが開かれている

    以下のrobocopyコマンドで正常に移行ができるのを確認できました。 robocopy コピー元 コピー先 /E /B /MIR /COPY:DATSOU /DCOPY:DAT /XX /NP /IM /XC /XJF /XJD /Z /R:1 /W:1 /LOG:D:\robocopy.log その際、1~3が可能か知りたいです。 1.コピー元でファイルが開かれていた場合、そのファイルだけコピーをスキップするオプションはありますでしょうか? 2.その際、ログにエラーを出力するオプションを知りたいです。 3.1.で開いていたファイルが閉じた際に、コピーを再実行する方法があれば教えて頂きたいです。

  • 起動しなくなってしまったXPのファイルコピー(外付けHDDへ)

    PCが起動しなくなってしまいました。OSはXPです。 FD起動ディスクを用意し、DOSコマンドにより 外付けHDDに必要なものだけコピーしたいのですが、 どういうコマンドを使用すればよいでしょうか? とりあえず、第一優先は画像ファイルがいくつか点在していますので、 画像ファイルを一覧で確認後、COPYコマンドによりCOPYしたいです。DOSコマンドはあまり知らないのですが、できるものなら*.jpgというような指定で外付けHDDにコピーしたいです。 一応やりたいことは (1)画像ファイル(たとえば拡張子jpg)がどこに保存されているか? (2)画像ファイルを外付けHDDへコピー です。 ご教授よろしくお願いします!!!

  • 外付けハードディスクのファイルが開けなくなった

    会社で使用している外付けのHDDのファイルの一部が開く事が出来なくなりました。 Meのパソコンを介して、外付けのHDDを社員で共有していました。 本日、アクセス出来なくなったため、パソコン再起動し(エラーが発生し、スキャンディスクが始まった。長いので途中でキャンセル)、正常にMeは起動しました。 共有のHDDも正常に認識し、ファイルも見る事(存在)が可能ですが、ファイルを開こうとすると、「読み取り専用です。アクセス権がありません」の表示でエラーとなり、開く事が出来ません。そのファイルを自分のパソコンにコピーする事も出来ません。 全てのファイルが、このような状況ではなく、開く事が出来るファイルもあります。大切なデータもあるので何とかしたいのですがこのような状況になったら、ファイルは既に壊れてしまっているのでしょうか? また、新たに作ったファイルを、HDDに書き込む事も可能ですし、そのファイルを開く事も可能です。 ちなみに、HDDの表面のランプ表示は「正常」です。 よろしくお願いします。

  • rsyncやSSH接続ができません。

    ■rsyncがRSHでなく必ずSSH接続になってしまいます。 環境変数RSYNC_RSHもないのですが何故でしょうか? なおPort番号は22ではなく220をSSHにしています。 rsync -avz /home/test backup-server:/home/backup ssh: connect to host backup-server port 22: Connection refused rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(359) ■仕方なくSSHで接続しようと試みましたが今度はパーミッションエラーでした。 SSHのバージョンはサーバーは2で、クライアントはCentOS4.1ですがSSHの バージョンがわからない状態です。 SSHのバージョンはどう調べれば良いでしょうか? sync -avz -e "ssh -p 220 -oHostKeyAlias=test-server" /home/backup backup-server:/home/backup Permission denied (publickey). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(359) なお、authorized_keysは、id_rsa.pubからコピーしてあり、644。 known_hostsには、test-serverは入っていて、644です。

  • プロパティの損失

    プロパティを含めずにこのファイルをコピーしますか? 「ファイル○○○○○は新しい場所へコピーできないプロパティを持っています。」 というメッセージが表示されます。 このままコピーをしても問題はないのでしょうか? OS:はWindows Vista コピー元HDDのフォーマット形式:NTFS コピー先HDDのフォーマット形式:XFS(LinkStation LS-WV2.0TL/R1) ちなみにそのままコピーをしてコピー先のHDDからファイルを開くと 「エラー50:不明なエラーが起きました()」というメッセージが出て開けませんでした。 ただこのコピーしたファイルをデスクトップなどに戻してファイルを開くとちゃんと開けます。 たとえばOSをWindows7などにすることによってこの問題を解消することができるのでしょうか?

  • Perl中で teeを使っても戻り値を得たい

    例えば make compile |& tee log とすると、tee のせいでmake の戻り値が得られないということに関しての相談です。 いま、perlの中で、 > $cmd = "$make compile 2>&1| tee compile.log"; > $rval = system($cmd); > if($rval){ print "Error\n"} のような使い方をしています(実際は$rval >>8 とする必要があるようです)。 上記のようにログを端末に表示し、ファイルにも落とし、かつ戻り値も利用したい、という場合、どのようにしたらよいのでしょうか。 # BASHでは echo ${PIPESTATUS[0]} で得られる、 # Perl のTee Moduleがあるなどの情報だけは発見できたのですが。。。 宜しくお願い致します。