- PR -

cpコマンドに限界は?

1
投稿者投稿内容
なんぺい
常連さん
会議室デビュー日: 2003/09/26
投稿数: 26
投稿日時: 2005-11-17 18:51
どなたかご教授ください。

Turbo linux 7 を利用しているのですが、cpコマンドで行うファイルコピーに
おいて、コピーするファイルサイズの制限はあるのでしょうか?
また、" cp -v abc* /home/tmp " のように*を指定してコピーした場合にも
制限はあるのでしょうか?
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2005-11-17 19:23
引用:

また、" cp -v abc* /home/tmp " のように*を指定してコピーした場合にも
制限はあるのでしょうか?


あります。
ワイルドカード展開された後の引数のバイト数が一定量を越えると、
エラーメッセージが表示されます(bashの場合)。
具体的な最大数は忘れましたが、bashはソースが公開されてるわけなので、
実際にソースを眺めてみれば多分分かるはずです。
何かの言語やったことがあって、見る目的が決まってれば、
書かれてる言語自体あまり知らなくても何となく読めたりするもんです。


ワイルドカード展開部分は使ってるシェルに依存するので、
bash以外を使ってる場合はまた異なる制限値(制限値無しも含めて)になる可能性はあります。

なお、限界値に達する前の状態であっても、明らかにパフォーマンスはおちます。

あと、技術的興味で限界値を知りたいのが目的ではなく、
具体的にどれくらいコピーしたい、というのが分かってるなら、
それを示してくれた方が答えやすいかも。
_________________
Mattun
Microsoft MVP for Directory Services
(Oct 2006-Sep 2007)
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-11-17 20:29
こんばんは。

可能性としては、2GB制限がありえます。
最近のユーティリティでは 2GB超のファイルに対応しているはずですが、Turbo Linux 7 あたりだと怪しそうな。

ちなみに、* ( ワイルドカード ) を使う場合、これは cp の制限というよりも、シェルの制限になります。( ワイルドカード展開後の文字数 )
bash は相当までいけるはずですが、限界を探った事はありません。
勿論、ワイルドカード展開後、cp に渡される引数の個数にも制限はあるかも知れませんが…。
なんぺい
常連さん
会議室デビュー日: 2003/09/26
投稿数: 26
投稿日時: 2005-11-21 09:30
angelさん、Mattunさん 回答ありがとうございました。

ファイルサイズ制限については、かなり前のAIX(UNIX)には確かに2G制限がありました。
最近のOS(Linux)に制限があるかについては調べてみます。

コピーするファイル数についてはそれほどの数(多くて20〜30)なので、心配はしてい
ませんでした。但し、引数のバイト数については調べてみる必要がありそうです。
1

スキルアップ/キャリアアップ(JOB@IT)