バックアップする新しいファイルが以前のバックアップよりも小さい場合は、破損したデータのバックアップを防ぐためにスクリプトを終了するようにバックアップスクリプトからスキャンを作成しようとします。
しかし、この質問に対する私が見つけたすべての答えは、ファイルが他のファイルではなくバイト値より大きいか小さいことを確認することです。
答え1
これを使用してstat
ファイルサイズを取得できます。-c
書式設定に使用され、%s
ファイルサイズをバイト単位で取得する書式として使用されます。
#! /bin/bash
file=...
backup=...
file_size=$(stat -c %s "$file")
backup_size=$(stat -c %s "$backup")
if (( file_size > backup_size )) ; then
echo "$file" is bigger.
fi
答え2
statを使用してstat --format=%s <file>
ファイルサイズを取得し、組み込みの-gtおよび-eq演算子を使用して整数値を単純に比較できます。 file-smaller.sh の例は次のとおりです。
#!/usr/bin/env sh
file1_size="$(stat --format=%s file1)"
file2_size="$(stat --format=%s file2)"
if [ "$file1_size" -eq "$file2_size" ]
then
printf "Files have equal sizes\n"
elif [ "$file1_size" -gt "$file2_size" ]
then
printf "file1 is larger\n"
else
printf "file2 is larger\n"
fi
使用法:
$ echo abc >> file1
$ echo abcd >> file2
$ ./file-smaller.sh
file2 is larger
$ cp file1 file2
$ ./file-smaller.sh
Files have equal size