Samba サーバ上にある非常に大きな tar.bz2 ファイルを、直接 Linux マシンに解凍したいと思った。大きいので、1回ファイルに保存したりはしたくない。smbclient コマンドで、ファイルを標準出力に出す方法を探したが見つからなかった。代わりに、次のようなコマンドでできた。
$ smbget -u DOMAIN/USER smb://server/share/path/to/file.tar.bz2 --stdout | tar jxf -
この前買った 3TB の HDD にデータを書き込んでいたら、突然他のファイルやディレクトリが読めなくなってしまった。この症状、非常に心当たりがある。十数年前にも同じようなことがあった。
GA-X58A-UD3R rev.2.0 の BIOS を確認すると、バージョン FG1 に "3TB+ HDD support" と書かれている。自分のマシンのバージョンを確認すると、FB だった。ビンゴ!
GIGABYTE の BIOS アップデートツールである @BIOS を使って、最新バージョンの FH に更新しようとしたところ、ファイルサイズが合わないとのメッセージが出た。先ほどのページをよく見ると、最新の @BIOS を使えと書いてある。そのファイルをダウンロードして @BIOS を更新してから、もう一度書き込んでみようとしたところ、同じエラーが出た。@BIOS の画面の @ ボタン (Live Update) を押して、再度 @BIOS を更新してから、"Update BIOS from GIGABYTE Server" を選択して、ようやく BIOS の更新がうまくいった。
BIOS の更新が完了して一安心してデータをコピーしていたら、再びデータの上書きが発生してしまった。よく見ると、Intel の AHCI ドライバが相当古いままだった。現時点での最新版である 11.2 をインストールしたところ、ようやく正常に使えるようになった。新しいものを使うときは十分にテストしないとダメである。
数日前、Windows 版の Vim が NTFS のシンボリックリンクを正しく扱えてないことに気づいた。「Issue #241: Windowsのシンボリックリンクを正しく扱えるようにしたい · vim-jp/issues」で、試行錯誤の結果、うまく動くものができたので vim_dev にパッチを投げてみた。
久しぶりに MinGW と MSYS をインストールしてみた。GUI のインストーラができた上、mingw-get というコマンドで後からパッケージを追加インストールできるようになっており、以前に比べるとずいぶん楽にインストールできるようになった。
インストール時のコンポーネントの選択は以下のようにした。
MinGW Developer ToolKit というのは、名称が異なっているが、おそらく msysDTK (MSYS Developer Tool Kit) と同じ物だと思われる。それ以外のコンポーネントについては、Package Guide | MinGW に記載されている。
「minttyを使ってみる - プログラム備忘録」 を参考に、mintty をインストールしてみた。そのサイトには $HOME が設定されないと書かれているが、msys.bat --mintty で起動すれば設定されていた。
fork の速度を計測 してみたが、Cygwin とほとんど変わらなかった。手元の Core i5 WinXP だと 10forks/sec 程度。
msysGit をインストールすると、どのようになるのだろうか。
Linux マシンから Windows マシンとファイルをやりとりするために、smbclient コマンドを使ってみた。
Linux マシンから Windows マシンへファイルを転送する場合は、例えば次の通り。
$ smbclient -U DOMAIN\\USER '\\server\share-name' -c 'cd path\to\dir; put filename'
あるいは、-D でディレクトリを指定した方が良いかもしれない。
$ smbclient -U DOMAIN\\USER '\\server\share-name' -D 'path\to\dir' -c 'put filename'
ファイルを取得するには、put を get に変えればよい。
Ubuntu 10.04 で Git をビルドするための手順をまとめた。Ubuntu 10.04 に入っている Git は 1.7.0.4 で非常に古い。git cherry-pick で複数コミットを指定できなかったり、git lola の表示がカラフルではないため非常に見にくかったり、git am --keep-cr が使えなかったりと、いろいろ不便である。
入門Git には、以下の方法でビルドに必要なパッケージをインストールできると書かれている。
$ sudo apt-get build-dep git-core
しかし、この方法では、数十もの大量のパッケージがインストールされてしまう。実は、これにはドキュメントをビルドするためのパッケージが大量に含まれている。ビルド済みのドキュメントは公式サイトからダウンロードできるので、ドキュメントさえビルドしなければ、これほど大量のパッケージをインストールする必要はない。
この環境は Android のビルドのため、Initializing a Build Environment | Android Open Source に記載されているパッケージはインストール済みだったが、それに加えて以下のパッケージのインストールが必要だった。
libcurl4-gnutls-dev と libcurl4-openssl-dev の違いはよく分からない。どちらでもビルドできるが、build-dep でインストールされるのは前者である。
後は、例えば以下のようにビルド・インストールすればよい。(この場合、ファイルは $HOME/bin と $HOME/opt/git 以下にインストールされる。)
$ tar xvf git-1.7.11.4.tar.gz $ cd git-1.7.11.4 $ ./configure --prefix=$HOME/opt/git --bindir=$HOME/bin $ make && make install $ cd .. $ tar xvf git-manpages-1.7.11.4.tar.gz -C $HOME/opt/git/share/man
WD の WD30EZRX を購入。前の 2TB の HDD から robocopy コマンドを使ってデータコピーを行った。使ったコマンドは以下の通り。
> robocopy /E /DCOPY:T e:\ f:\ /XD "System Volume Information" $RECYCLE.BIN RECYCLRER
ファイルの断片化を解消するために、ディスク単位ではなくファイル単位のコピーを行ったのだが、15時間以上もの時間が掛かってしまった。計算すると 30〜40MB/s 程度なので、そんなものか。
手持ちの USB-SATA 変換ケーブルが 3TB HDD を正しく認識できなかった。3つのうち
2つは、約 780GB として認識し、1つは全く認識できなかった。そのうちの 1つは USB 3.0 対応なのでそれなりに新しいはずだが、それでもダメだった。
古い HDD の整理を行った。