構造を維持したままの大きなファイルのコピー

LinuxBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、10K 以上のファイルを /etc ディレクトリから /tmp/etc ディレクトリにコピーし、ディレクトリ構造を維持する方法を学びます。これは、Linux システム上のファイルの管理と整理に役立つスキルです。

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • サイズに基づいてファイルをコピーするスクリプトを作成する方法
  • 特定の基準を満たすファイルを検索するための find コマンドの使い方
  • ファイルをコピーする際にディレクトリ構造を維持する方法
  • sudo を使って昇格権限でスクリプトを実行する方法

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • サイズに基づいたファイルのコピープロセスを自動化する
  • ファイルをコピーする際にディレクトリ構造を維持する
  • 特定の基準を満たすファイルを検索するために find コマンドを効果的に使う
  • 保護されたファイルやディレクトリにアクセスするために昇格権限でスクリプトを実行する

コピースクリプトを作成する

このステップでは、10K 以上のファイルを /etc ディレクトリから /tmp/etc ディレクトリにコピーするスクリプトを作成します。

  1. テキストエディタを使って /home/labex/project ディレクトリ内の copy.sh ファイルを開きます。
  2. 次のコードをファイルに追加します。
#!/bin/zsh

## このスクリプトは、10K 以上のファイルをソースディレクトリからターゲットディレクトリにコピーします。

## ソースディレクトリとターゲットディレクトリを定義する
source_dir="/etc"
target_dir="/tmp"

## ターゲットディレクトリが存在しない場合は作成する
mkdir -p "$target_dir"

## find コマンドを使って 10K 以上のファイルを検索し、それらをターゲットディレクトリにコピーする
find "$source_dir" -type f -size +10k -exec cp --parents --dereference "{}" "$target_dir" \;

echo "File copying complete."
  1. ファイルを保存します。

このステップでは、10K 以上のファイルを /etc ディレクトリから /tmp/etc ディレクトリにコピーし、ディレクトリ構造を維持する copy.sh スクリプトを作成しました。

コピースクリプトを実行する

このステップでは、ファイルをコピーするために copy.sh スクリプトを実行します。

  1. ターミナルを開き、/home/labex/project ディレクトリに移動します。
  2. 次のコマンドを使ってスクリプトを実行します。
sudo sh copy.sh

これにより、昇格権限でスクリプトが実行され、labex ユーザーがアクセスできない場合でもファイルをコピーできるようになります。

  1. スクリプトが完了するまで待ちます。スクリプトが終了すると、「File copying complete.」というメッセージが表示されるはずです。

このステップでは、10K 以上のファイルを /etc ディレクトリから /tmp/etc ディレクトリにコピーするために copy.sh スクリプトを実行しました。

コピーされたファイルを確認する

このステップでは、ファイルが正しくコピーされたことを確認します。

  1. ファイルマネージャーを開き、/tmp/etc ディレクトリに移動します。
  2. ディレクトリ構造とコピーされたファイルを確認します。ディレクトリ構造が維持されており、10K 以上のファイルのみがコピーされているはずです。
  3. ターミナルで ls -l コマンドを使って、/tmp/etc ディレクトリ内のファイルとそのサイズを一覧表示することもできます。

このステップでは、ファイルが /etc ディレクトリから /tmp/etc ディレクトリに正しくコピーされたことを確認しました。

おめでとうございます! /etc ディレクトリから /tmp/etc ディレクトリに 10K 以上のファイルをコピーし、ディレクトリ構造を維持するプロジェクトを成功裏に完了しました。

まとめ

おめでとうございます!このプロジェクトを完了しました。実験技術を向上させるために、LabEx でさらに多くの実験を行ってみてください。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習