TT Lab
はじめる
学ぶ 学習パス コース

Linux基礎

ファイルとディレクトリを扱う

TT Labで続きを見る

目標

ファイルとディレクトリを作り、移動し、リンクでつなぎ、まとめてバックアップする流れを手に馴染ませます。特に、ハードリンクとシンボリックリンクの違いを inode 番号で直接確かめます。

なぜ重要なのか

Linux でファイル名は実体ではなく、実体を指す参照です。ディレクトリは (名前, inode 番号) の組のリストにすぎず、データの本当の持ち主は inode です。この構造を知っていると、「なぜ mv は 1GB のファイルでも一瞬で終わるのか」「なぜ rm しても容量が減らないのか」「なぜハードリンクは別のディスクに張れないのか」が一度に説明できます。逆にこの構造を知らないと、その3つをそれぞれ別の異常現象として暗記することになります。

ステップ

  1. /root/work ディレクトリを作ってください。
  2. /root/work/hello.txt を作り、1行目に hello labhub を入れてください。
  3. /etc/hostname を /root/work/hostname にコピーしてください。内容が元と完全に同じでなければなりません。
  4. /root/work/logs/2026/08 ディレクトリを一度に作ってください。
  5. /root/work/logs/2026/08 の下に app1.log から app5.log までの5つを作り、そのファイルの名前だけ(パスは除く)を1行に1つずつ入れた /root/work/loglist.txt を作ってください。
  6. hello.txt を指すハードリンク /root/work/hello.hard と、シンボリックリンク /root/work/hello.link をそれぞれ作ってください。
  7. /root/work/draft.txt を作って draft の1行を入れたあと、/root/work/logs/2026/08/draft.txt に移動してください。
  8. /root/work/logs ディレクトリ全体を /root/work/backup.tar.gz に圧縮してまとめてください。

参考

作業ディレクトリを作る

/root/work ディレクトリを作ってください。

ディレクトリを作るコマンドは mkdir です。パスは /root/work をそのまま使ってください。

最初のファイルを作る

/root/work/hello.txt を作り、1行目に hello labhub を入れてください。

echo の出力をファイルに送る(リダイレクト)か、vim で直接作っても構いません。

システムファイルをコピーする

/etc/hostname を /root/work/hostname にコピーしてください。内容が元と完全に同じでなければなりません。

cp は元のファイルをそのまま残して新しいファイルを作ります。コピーは元と内容が完全に同じでなければなりません。

入れ子のディレクトリを一度に作る

/root/work/logs/2026/08 ディレクトリを一度に作ってください。

mkdir は既定では、親ディレクトリがないと失敗します。上位のパスまで一度に作るオプションがあります。

ログファイルの一覧を取り出す

/root/work/logs/2026/08 の下に app1.log から app5.log までの5つを作り、そのファイルの名前だけ(パスは除く)を1行に1つずつ入れた /root/work/loglist.txt を作ってください。

find で .log ファイルを探しますが、必要なのはパス全体ではなくファイル名だけです。-printf や basename を思い出してみてください。

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

hello.txt を指すハードリンク /root/work/hello.hard と、シンボリックリンク /root/work/hello.link をそれぞれ作ってください。

ln はハードリンク、ln -s はシンボリックリンクです。stat で inode 番号(%i)とリンク数(%h)を比べてみてください。

ファイルを移動する

/root/work/draft.txt を作って draft の1行を入れたあと、/root/work/logs/2026/08/draft.txt に移動してください。

コピー(cp)ではなく移動(mv)です。元の場所には何も残ってはいけません。

ログディレクトリをバックアップする

/root/work/logs ディレクトリ全体を /root/work/backup.tar.gz に圧縮してまとめてください。

tar でまとめて gzip で圧縮するオプションの組み合わせが必要です。logs ディレクトリ全体を含めてください。