Linuxの高度なファイル操作(ln/rsync/tar/ddコマンド)

  • URLをコピーしました!

Linuxでのファイル操作やバックアップ作業は、データ保護や効率的なシステム運用において重要です。
この記事では、lnrsynctarddのコマンドを中心に、
具体的な使用例とその効果を解説し、cpコマンドとの違いも含めて紹介します。

目次

ln:リンク作成の基本

lnコマンドは、ファイルやディレクトリに対してリンクを作成するためのコマンドです。
リンクには主に2種類あります:ハードリンクとシンボリックリンクです。

ハードリンク vs シンボリックリンク

  • ハードリンク:元ファイルと同じデータを指すリンクで、どちらか一方を削除しても、データ自体は消えません。
  • シンボリックリンク:元ファイルの場所を指すだけのショートカットのようなリンクで、元ファイルが削除されるとリンクも機能しなくなります。

使用例:

ln 対象のファイル名 作成するリンク名

# ハードリンクの作成
ln file1 link1

# シンボリックリンクの作成
ln -s /path/to/file link_name

ln file1 link1 は、file1というファイルのハードリンクをlink1という名前で作成します。
ハードリンクは元のファイルと同じデータを指し、どちらかが削除されてもデータは残ります。ln -s /path/to/file link_name は、/path/to/fileというパスに対して
link_nameというシンボリックリンクを作成します。
シンボリックリンクは、元ファイルへのショートカットのようなものです。

主なオプション:

  • -s:シンボリックリンクを作成
  • -f:既存のリンクを強制的に上書き

rsync:高速なファイル同期とコピー

rsyncは、ファイルやディレクトリを効率よく同期・コピーするコマンドで、
バックアップやリモートサーバ間でのデータ転送に使用されます。
cpコマンドとの大きな違いは、rsyncは転送する際に差分のみをコピーするため、
ネットワーク上でのデータ量を削減できる点です。

使用例:

rsync -avz /source/dir/ /destination/dir/

この例では、/source/dir/内のファイルを/destination/dir/へ圧縮しながら転送しています。

主なオプション:

  • -a:アーカイブモード(ファイルのパーミッションやタイムスタンプを保持)
  • -v:詳細情報を表示
  • -z:データを圧縮して転送

tar:アーカイブとバックアップ

tarは、複数のファイルを一つのアーカイブファイルにまとめるためのコマンドで、
バックアップを行う際によく使用されます。圧縮機能と組み合わせて、
アーカイブファイルのサイズを最小限に抑えることが可能です。

使用例:

tar -オプション アーカイブ名 ファイル及びディレクトリ

# ディレクトリ全体を圧縮してアーカイブ
tar -czvf backup.tar.gz /path/to/directory/

このコマンドは、指定したディレクトリを圧縮しつつ
backup.tar.gzというアーカイブファイルを作成します。

主なオプション:

  • -c:新しいアーカイブを作成
  • -x:アーカイブを解凍
  • -z:gzip圧縮を使用
  • -v:詳細情報を表示
  • -f:アーカイブファイル名を指定

dd:ディスクコピーとバックアップ

ddコマンドは、Linuxでデータのコピーやバックアップ、イメージの作成などに使われる非常に強力なツールです。
ddは「データの定義 (data definition)」を意味し、主にブロック単位でのデータ操作ができます。
たとえば、ディスク全体のコピーやファイルシステムのバックアップなどに用います。

ddの基本構文

dd if=入力ファイル of=出力ファイル [オプション]
  • if=: 読み取る入力ファイル
  • of=: 書き込む出力ファイル

主なオプション

  • bs=: ブロックサイズを指定します。デフォルトは512バイトです。
  • count=: コピーするブロック数を指定します。
  • skip=: 入力ファイルの読み込みを開始する前にスキップするブロック数を指定します。
  • seek=: 出力ファイルの書き込みを開始する前にスキップするブロック数を指定します。

具体例

1. ディスク全体のバックアップを作成

次のコマンドは、ディスク全体のイメージをバックアップファイルに作成します。

dd if=/dev/sda of=/path/to/backup.img bs=4M
  • if=/dev/sda: /dev/sdaはシステムのディスクデバイス。
  • of=/path/to/backup.img: これが出力ファイル、ディスクイメージが保存される場所。
  • bs=4M: 4MBのブロックサイズでデータをコピーします。

2. ディスクから特定サイズのデータをコピー

以下のコマンドは、ディスクの先頭から1GB分のデータをコピーします。

dd if=/dev/sda of=/path/to/output.img bs=1M count=1000
  • bs=1M: 1MB単位でデータを読み取る。
  • count=1000: 1000ブロック、つまり約1GBをコピー。

3. ブート可能なUSBドライブの作成

ISOイメージをUSBに書き込んでブート可能にする場合、次のコマンドを使います。

dd if=/path/to/image.iso of=/dev/sdb bs=4M status=progress
  • status=progress: 進捗状況を表示します。

cpとの違い

cpコマンドはファイル単位のコピーに使用されますが、ddはブロック単位で動作し、
ディスク全体のコピーやファイルシステム、パーティション、デバイスなども扱えます。
たとえば、ディスクのイメージ作成や不良セクタの回避など、高度なコピー操作が必要な場合にはddが有用です。

注意点

ddは強力なコマンドですが、誤ったデバイスを指定すると
システム全体が破損する可能性があるため、実行時には非常に慎重であるべきです。

  • cp:ファイルやディレクトリ単位でコピーを行い、基本的には通常のファイル操作で使用されます。部分的なコピーやリカバリ操作には適していません。
  • dd:ディスク全体やパーティションを丸ごと扱うことができ、バックアップやシステムイメージの作成などに使用されます。

まとめ

Linuxの高度なファイル操作やバックアップ作業には、各コマンドの役割や特徴を理解して使い分けることが重要です。lnでのリンク作成、rsyncでの差分同期、tarによるアーカイブ作成、
そしてddによるディスクイメージのバックアップは、データ管理やシステム保守において強力なツールです。
これらをマスターすることで、Linux環境でのファイル管理やバックアップ作業がより効率的に行えるようになります。

    目次