FreeBSD機のデータ救出するためにUbuntu studio機につないでみた.
1. 認識
何はともあれ,dmesgを見てみる.
[ 1.159211] scsi 3:0:0:0: Direct-Access ATA Hitachi HDS5C302 ML6O PQ: 0 ANSI: 5 [ 1.159330] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 1.159404] sd 3:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB) [ 1.159504] sd 3:0:0:0: [sdb] Write Protect is off [ 1.159507] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.159550] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.184219] sdb: sdb1 [ 1.184219] sdb1: <bsd: sdb5 sdb6 sdb7 sdb8 sdb9 sdb10 >
しっかりFreeBSDのパーティション (bsd: sdb5 sdb6 sdb7 sdb8 sdb9 sdb10) を認識してる.
2. マウント
順番にマウントしてみる.
root@dahlia:/# uname -a Linux dahlia 3.11.0-14-lowlatency #6-Ubuntu SMP PREEMPT Wed Nov 20 23:59:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb5 /mnt root@dahlia:/# ls /mnt COPYRIGHT boot.config entropy home media rescue sys var bin compat etc lib mnt root tmp boot dev export libexec proc sbin usr root@dahlia:/# umount /mnt root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb6 /mnt mount: 間違ったファイルシステムタイプ、不正なオプション、 /dev/sdb6 のスーパーブロックが不正、コードページまたは ヘルパープログラムの未指定、或いは他のエラー In some cases useful info is found in syslog - try dmesg | tail or so root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb7 /mnt root@dahlia:/# ls /mnt bin include libexec ports src src_R83p4.tar.gz compat lib local sbin src_82R.tar.gz src_R83p8 games libdata obj share src_R83p4 root@dahlia:/# umount /mnt root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb8 /mnt root@dahlia:/# ls /mnt account backups db heimdal mail nmbd rwho yp at crash empty log msgs preserve spool audit cron games lost+found named run tmp root@dahlia:/# umount /mnt root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb9 /mnt root@dahlia:/# ls /mnt samba ueda root@dahlia:/# umount /mnt root@dahlia:/# mount -r -t ufs -o ufstype=ufs2 /dev/sdb10 /mnt root@dahlia:/# ls /mnt db samba www
内容的に以前のマウントポイントはこんな感じの様子.
- sdb5: /
- sdb6: swap
- sdb7: /usr
- sdb8: /var
- sdb9: /home
- sdb10: /export
マウントポイントを作って一気にマウントするスクリプトを作っておいた.
rose@dahlia:~# mkdir /rose root@dahlia:~# cat mount_rose_disk.sh #!/bin/sh mount -r -t ufs -o ufstype=ufs2 /dev/sdb5 /rose mount -r -t ufs -o ufstype=ufs2 /dev/sdb7 /rose/usr mount -r -t ufs -o ufstype=ufs2 /dev/sdb8 /rose/var mount -r -t ufs -o ufstype=ufs2 /dev/sdb9 /rose/home mount -r -t ufs -o ufstype=ufs2 /dev/sdb10 /rose/export
ここまでくれば後は吸い出すだけだから大丈夫か.
3. 文字コードの変換
と思いきや,ファイルを読み込んでいくとEUC-JPなファイル名がゴロゴロ出てくる.そのままでは困るので convmv というツールを入れた.デフォルトでは実際に変更をかけないという超安全設計なツール.これでsamba経由で書き込んだ日本語ファイル名が元に戻った.
(事前確認)
> convmv -r -f euc-jp -t utf8 *
(実際に変換する)
> convmv --notest -r -f euc-jp -t utf8 *