同じディレクトリにある同じファイルを使用して別のmd5sumを取得したので、奇妙だと思います。出力は次のとおりです。
[root@testlabs Config]# ls
Backup_Files
hostname1-config.uac
hostname2-config.uac
hostname3-config.uac
[root@testlabs Config]# ls hostname1-config.uac | md5sum
2a52f0eb11f6478a4f8aeee1c0ac90dd -
[root@testlabs Config]# md5sum hostname1-config.uac
d41d8cd98f00b204e9800998ecf8427e hostname1-config.uac
正しい md5sum 結果を得る方法がわかりますか?ありがとうございます。
両方のファイル(元のファイルとバックアップコピーファイル)のMD5を比較するためにこれを行っています。元のファイル命名規則はホスト名1-config.uacで、バックアップファイル名はホスト名1-201411071649.uacですが、コピーのみです(cp -p)。
最初の方法
(動作しない)
#!/bin/bash
# ...
#
ls hostname1-config.uac | md5sum hostname1-config.uac > /tmp/md5sum.tmp
ARCHIVE_DIR="/tmp/Archive"
FULL_HOSTNAME=`/bin/sort -d /tmp/full_hostname.tmp`
TIMESTAMP=`/bin/date +%Y%m%d%H%M -r $FULL_HOSTNAME`
for HOSTNAME in `/bin/sort -d /tmp/hostname.tmp`
do
ls $ARCHIVE_DIR | grep -i --text $HOSTNAME-$TIMESTAMP.uac | md5sum -c /tmp/md5sum.tmp >> /tmp/md5sum2.tmp
done
2番目の方法
(コマンドラインでは完全に機能しますがスクリプトでは機能しません)
コマンドラインから
[root@testlabs Config]# md5sum hostname1-config.uac
ca3434263400ea2b4ffbc107ef729b8a hostname1-config.uac
[root@testlabs Config]# md5sum hostname1-config.uac > md5.tmp
[root@testlabs Config]# cd /tmp/Archive
[root@testlabs Archive]# md5sum hostname1-config.uac
ca3434263400ea2b4ffbc107ef729b8a hostname1-config.uac
[root@testlabs Archive]# echo 'Tampered!' > hostname1-config.uac
[root@testlabs Archive]# cat hostname1-config.uac | md5sum - c /Network_Backup/Config/md5.tmp
hostname1-config.uac: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@testlabs Archive]# rm -f hostname1-config.uac
[root@testlabs Archive]# cd /tmp/Config
[root@testlabs Config]# cp -p hostname1-config.uac /tmp/Archive
[root@testlabs Config]# cd /tmp/Archive
[root@testlabs Archive]# cat hostname1-config.uac | md5sum -c /Network_Backup/Config/md5.tmp
hostname1-config.uac: OK
スクリプトから
#!/bin/bash
# ...
#
CONFIG_DIR="/tmp/Config"
ARCHIVE_DIR="/tmp/Archive"
HOSTNAME=`/bin/sort -d /tmp/hostname.tmp`
FULL_HOSTNAME=`/bin/sort -d /tmp/full_hostname.tmp`
TIMESTAMP=`/bin/date +%Y%m%d%H%M -r $FULL_HOSTNAME`
cd $CONFIG_DIR
md5sum $FULL_HOSTNAME > /tmp/md5sum.tmp
cd $ARCHIVE_DIR
cat $HOSTNAME-$FILE_TIMESTAMP.uac | md5sum -c /tmp/md5sum.tmp >> /tmp/md5sum2.tmp
/tmp/md5sum2.tmpに返された結果:
ホスト名1-config.uac:オープンまたは読み取りに失敗しました
ベストアンサー1
後者の。これを実行すると、ファイルの内容のmd5sumではなくls file | md5sum
文字列のmd5sumが得られます。file\n
一般的にはいいえパススルーファイルを使用してls file | command
要件を満たすことはほとんどありません。コマンドのファイル名を指定し、そのコマンドがファイルに対していくつかの操作を実行すると予想している場合は、そのコマンドを引数として指定できます。
command file
そのため、この場合はmd5sum
以下を実行する必要があります。
$ md5sum hostname1-config.uac