アプリ版:「スタンプのみでお礼する」機能のリリースについて

CDの中の1つのフォルダに5万個のファイルがあります。
GUIでHDDにコピーしましたが、あまりにも遅過ぎるので途中で止めました。
プログレスバーが全く進まないし、熱で壊れそうなので途中で止めましたが、いくつかのファイルはコピーできていました。
1つのファイルは平均200kBです。
日本語、大文字が無いので、
0から始まるファイルのコピー
1から始まるファイルのコピー
   ・・・・・・・
zから始まるファイルのコピー
というように36分割すれば、1回で1400ファイルぐらいのコピーになるから早くできそうです。
考えはしましたが、これを自動化する方法が分からないし、他にもっとよい方法がございましたら教えてください。
Linuxの普通の操作でさえ困難なほどの知識しかありません。
マウントはやったことがありません。
初心者向けの方法を教えてください。

A 回答 (4件)

この際、shellになれましょう。



マウントは、おそらく
$ mount /mnt/cdrom
でできるはずです。

で、その後、
$ cd /mnt/cdrom/(目的のファイルのあるディレクトリ)
$ cp * /home/hoge/fuga

* はワイルドカードといって、まあ七並べでいうジョーカーみたいなものです。

たとえば、
$ ls
foo foo1 foo2 goo goo2
というファイルがあったとすると

$ ls *2
foo2 goo2
$ ls goo*
goo goo2

ってかんじになります。
    • good
    • 0

 その GUI ソフトの出来にもよりますが、ファイルのコピーに要する時間は、CD と HDD の転送速度に依存するので、ファイル群を 36 分割しても、トータルでかかる時間はほとんど変わらないと思います。


 それでも他の方法を試したいのなら、他のソフトを探して使うか、Linux 標準のコマンドを使うことになります。

 なお、No.1 の回答に

> $ cp * /home/hoge/fuga

とありますが、引数の個数(多分 255 か 256)とコマンド行の長さ(確か1000 文字ぐらい)に制限があるので、5 万個のファイルでは、制限に引っかかって実行できません。1400 個でも無理です。
 方法はいくつか考えられますが、例えば、

$ cd /mnt/cdrom/(目的のファイルのあるディレクトリ)
$ tar -cvf - . | (cd /home/hoge/fuga ; tar -xvf -)

という風にしてみてください(画面にコピーされるファイル名を表示しながらコピーが進みます)。いきなりやらないで、少ないファイルでテスト用のコピー先ディレクトリを使って、テストしてくださいね。

 もし、
> 0から始まるファイルのコピー
> 1から始まるファイルのコピー
>   ・・・・・・・
とするなら、tar の代わりに、

$ find . -name '0*' -cpio | (cd /home/hoge/fuga ; cpio オプション)

というのが考えられるのですが、cpio の「オプション」がどうすればよかったか、今思い出せません。マニュアルで確認してください。確か -ov か何かだったように記憶しているのですが…。
    • good
    • 0

抜本的な改善策はひとつ。



FDとかCD-ROMなどの遅い回転メディアでは
転送速度以上にシーク速度の遅さが目立つ…ゆえに
シーケンシャルアクセスだけするのが最速のアクセス方法。

つまり、CD-ROMをそのままイメージファイルにして
dd if=/dev/hdc of=~/cdrom.img

できたイメージファイルをループバックデバイスとして
マウントするためのディレクトリーを作り
mkdir ~/cdromimage

そこに実際にマウントする。
mount -o loop ~/cdrom.img ~/cdromimage

これで、ls ~/cdromimageすると
CD-ROMの最上ディレクトリーが再現される。

なお、~/はホームディレクトリーを表す特殊文字。


ディレクトリー構造をそのまま利用する用途なら
そのまま使ってもいいし
通常のHDD領域に、改めてコピーしても良い。


そういえば、数年前にDIRECTORで作成された
ある種のCDカタログがあって
ビッグサイトでのカタログビュワー作者らとの雑談では
「CD-ROMドライブが壊れる」とまで言われていた。

CDイメージ化は無駄もあるけど、結果的には
CD-ROMドライブの消耗を抑える効果も得られる。


この程度のマウント操作は、基本のうちだから
それが無理ならWindowsで市販仮想CD-ROMソフトとか買う手もある。
    • good
    • 0

 No.2 に補足と訂正です(No.3 の回答で答えは出ているのかも知れませんが、キモチ悪いので)。



補足:
> $ tar -cvf - . | (cd /home/hoge/fuga ; tar -xvf -)

 もっと単純に、cp -r . /home/hoge/fuga という方法もあります。コピー元にディレクトリが指定できるかどうか、マニュアルで確認してみてください。

訂正:

> $ find . -name '0*' -cpio | (cd /home/hoge/fuga ; cpio オプション)

これは記憶違いでした。正しくは、

find . -name '0*' -print | cpio -o | (cd /home/hoge/fuga ; cpio -idv)

です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!