カテゴリ: Linuxコマンド集 更新日: 2026/01/24

cp --sparseオプションの使い方|スパースファイルを効率よくコピーする方法を初心者向けに解説!

cp --sparseオプション|スパースファイルを効率的にコピーする
cp --sparseオプション|スパースファイルを効率的にコピーする

先生と生徒の会話形式で理解しよう

生徒

「Linuxで大きなファイルをコピーしたら、すごく時間がかかってディスクの容量もいっぱいになりました……。もっと効率的にコピーできる方法ってありますか?」

先生

「それはスパースファイルかもしれませんね。cpコマンドの--sparseオプションを使うと、空白部分をムダにコピーせず効率化できますよ。」

生徒

「スパースファイルって何ですか? 普通のファイルとどう違うんですか?」

先生

「スパースファイルとは、巨大だけど中身がスカスカのファイルのことです。ファイルサイズをムダに増やさない工夫がされています。詳しく見てみましょう!」

1. スパースファイルとは?

1. スパースファイルとは?
1. スパースファイルとは?

スパースファイル(sparse file)とは、中身の大部分が「ゼロ(空)」で埋められている特殊なファイルです。

たとえば、サイズは1GBあるように見えても、実際に保存されているデータはほんの少しということがあります。Linuxでは、このようなファイルを効率よく扱える仕組みがあります。

こうしたファイルを普通にコピーすると、ゼロの部分も全部コピーしてしまい、時間もディスク容量もムダに使ってしまいます。

2. --sparseオプションの基本

2. --sparseオプションの基本
2. --sparseオプションの基本

--sparseオプションを使うと、コピー時に空白部分を再現しながらムダな書き込みを省略できます。

つまり、スパースファイルの特性を活かして、コピー先でも「実際に必要な部分」だけをコピーすることができます。

基本的な使い方は以下のとおりです。


cp --sparse=always source.img destination.img

3. 実際にスパースファイルを作って試そう

3. 実際にスパースファイルを作って試そう
3. 実際にスパースファイルを作って試そう

Linuxではddコマンドを使って、スパースファイルを作ることができます。以下のコマンドを使って、ゼロで埋められた空のファイルを作成してみましょう。


dd if=/dev/zero of=sparse_file.img bs=1 count=0 seek=1G

このファイルは1GBと表示されますが、実際のディスク使用量はほとんどありません。


ls -lh sparse_file.img
-rw-r--r-- 1 user user 1.0G ... sparse_file.img

du -h sparse_file.img
0	sparse_file.img

ここで普通にコピーすると、空白も含めてコピーされ、実際のディスク使用量が増えることがあります。


cp sparse_file.img full_copy.img

du -h full_copy.img
1.0G	full_copy.img

しかし、--sparse=alwaysを使えば、スパース性が維持され、コピー先も効率的になります。


cp --sparse=always sparse_file.img sparse_copy.img
du -h sparse_copy.img
0	sparse_copy.img

4. --sparseオプションの指定方法

4. --sparseオプションの指定方法
4. --sparseオプションの指定方法

--sparseには、以下のような指定方法があります。

  • auto(デフォルト):元のファイルがスパースなら自動的にスパースとしてコピー
  • always:必ずスパースとしてコピー
  • never:スパースとしてコピーせず、すべての領域をコピー

明確にスパース性を保ちたいときは、--sparse=alwaysをおすすめします。

5. rsyncとの違いに注意

5. rsyncとの違いに注意
5. rsyncとの違いに注意

rsyncもスパースファイルをコピーできますが、--sparseオプションを明示的に指定する必要があります。


rsync --sparse sparse_file.img destination/

しかし、rsyncは設定が複雑で、初学者には少しハードルが高いことも。cp --sparseの方が扱いやすく、ファイルの性質を知る練習にもなります。

6. スパースファイルが使われる場面

6. スパースファイルが使われる場面
6. スパースファイルが使われる場面

スパースファイルは、次のような場面で使われます。

  • 仮想マシンのディスクイメージ(.imgファイル)
  • データベースの一時ファイル
  • ログファイルやバックアップ用の一時ファイル

こうしたファイルを頻繁に扱う開発者やシステム管理者にとって、スパースファイルの正しい取り扱いは重要なスキルとなります。

7. statコマンドで確認してみよう

7. statコマンドで確認してみよう
7. statコマンドで確認してみよう

スパースファイルの実態を調べるにはstatコマンドが便利です。


stat sparse_file.img

ここで「Size(見かけ上のサイズ)」と「Blocks(実際に使用しているブロック数)」を比較すると、スパースファイルかどうかが分かります。

Sizeが大きいのに、Blocksが少なければスパースファイルです。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
basenameの--zeroオプションでヌル文字区切り!xargsと安全に連携するLinuxの基本
New2
ファイル・ディレクトリ操作
find -userオプションの使い方を完全ガイド!初心者でもわかる所有者ユーザーでファイルを検索する方法
New3
ファイル・ディレクトリ操作
find -okオプションとは?初心者向けに丁寧解説!Linuxで確認付きコマンド実行をマスターしよう
New4
ファイル・ディレクトリ操作
dirname --zeroオプション|出力をヌル文字で区切る方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
rmコマンドとは?Linuxでファイルやディレクトリを削除する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門