アメリエフの技術ブログ

Amelieff Staff Blog

ファイルのコピーに失敗するときは転送速度を落としてみる

 こんにちは、久保(kubor)です。
 少し前からオフィスの近くで大阪風のお好み焼きを提供するお店を探しているのですが、どうも広島風の赤いお店が多い気がします。

外付けHDDからのコピーに失敗することがある

 ところで、弊社では日々お客様からのデータを受け取り、解析をしています。その際、データを受け取ると、まずは解析サーバにデータをコピーします。サイズはまちまちですが、ゲノムデータなどの大きいデータのコピーはよく失敗してしまいます。
 特に、USB3.0が使えるなど、高速転送できるときに遭遇する気がします。
 そんな時は、せっかくの高速転送ですが、諦めて転送速度を落としてあげると正常にコピーできることが多いです。

rsyncで転送速度を落としてコピー

 Linux上でのデータのコピーは、cpコマンドを使うことが多いと思います。ですが、少し複雑なことをしようとするとrsyncを使うことになります。基本的な使い方はcpと同じですが、オプションが豊富に用意されています。
例えば、データコピー時に権限や所有者、タイムスタンプなどをそのままにしてコピーするときに使う-aオプションは、-rlptgoDとオプション指定した場合と同義になります。つまりこれらを分割することもできるということです。僕は、コピー状況を確認するために-vをつけたり、-hを付けて読みやすい単位でファイルサイズを表示させたりして使用しています。
 さて、表題の転送速度を落とすオプションは以下です。
--bwlimit:転送速度(KB/s)を指定
 コピーに失敗するときには、このオプションで調節します。例えば、--bwlimit 10000とすれば、10MB/sで転送されます。
 /mnt/hdd/sampleA_R1.fastqがあったとしてカレントディレクトリへのコピーは以下のようにします。
$ rsync --avh --bwlimit 10000 /mnt/hdd/sampleA_R1.fastq ./
 コピーに失敗する際はお試し下さい。