0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

(調査中)shell。ファイル情報と実際のサーバー上のファイルで、ファイル情報と同じか。ファイル情報より古いか。ファイル情報より新しいかを表示したい

Last updated at Posted at 2024-12-04

指定されたファイル情報とサーバー上の実際のファイル情報を比較して、ファイルが一致するか、ファイル情報より古いか、新しいかを表示するシェルスクリプトを作成することができます。

file_info.txt
file1.txt,/path/to/file1.txt,1024,2024-12-01 12:00:00
file2.txt,/path/to/file2.txt,2048,2024-12-02 14:00:00
compare_files.sh
#!/bin/bash

# ファイル情報が保存されたファイル(例: file_info.txt)
file_info="file_info.txt"

# ファイル情報を読み込んで処理
while IFS=',' read -r stored_name stored_path stored_size stored_date; do
    # 実際のファイル情報を取得
    if [ -f "$stored_path" ]; then
        # 実際のファイルのサイズと更新日を取得
        actual_size=$(stat -c %s "$stored_path")
        actual_date=$(stat -c %y "$stored_path")

        # サイズを比較
        if [ "$stored_size" -eq "$actual_size" ]; then
            size_status="サイズは一致"
        else
            size_status="サイズが異なる"
        fi

        # 更新日を比較(フォーマットを一致させる)
        if [[ "$stored_date" == "$actual_date" ]]; then
            date_status="更新日は一致"
        else
            # ファイル情報より古いか新しいかを判定
            stored_date_timestamp=$(date -d "$stored_date" +%s)
            actual_date_timestamp=$(date -d "$actual_date" +%s)

            if [ "$actual_date_timestamp" -gt "$stored_date_timestamp" ]; then
                date_status="ファイルは新しい"
            elif [ "$actual_date_timestamp" -lt "$stored_date_timestamp" ]; then
                date_status="ファイルは古い"
            else
                date_status="更新日は一致"
            fi
        fi

        # 結果を表示
        echo "$stored_name ($stored_path): $size_status, $date_status"
    else
        echo "$stored_name ($stored_path): ファイルが存在しません"
    fi
done < "$file_info"

説明

file_info.txt からファイル情報(ファイル名、パス、サイズ、更新日)を読み込みます。
各ファイルの実際の情報(サイズと更新日)を stat コマンドで取得し、指定されたファイル情報と比較します。
比較の結果、ファイルが一致するか、サイズや更新日が異なるかを判定し、その情報を表示します。
ファイルが存在しない場合も表示します。

実行方法

上記のスクリプトをファイル(例: compare_files.sh)として保存します。
実行権限を付与します:

chmod +x compare_files.sh

スクリプトを実行します:

./compare_files.sh

例: 出力

例えば、file_info.txt に次のような情報があるとします:

スクリプトを実行した結果、次のように出力されます:

file1.txt (/path/to/file1.txt): サイズは一致, 更新日は一致
file2.txt (/path/to/file2.txt): サイズが異なる, ファイルは新しい

このスクリプトにより、サーバー上のファイル情報と指定された情報が一致するか、更新日やサイズに違いがあるかを確認できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?