0

md5sum一部のファイルからサーバーへのリモート結果を、ローカルmd5sumファイルと一致するファイルと比較しようとしています。ローカル サーバーから削除hashする必要があります。filename

両方からの取得に関するアルゴリズム全体md5sumが完了しました。次のようなものがあります。

remote_list="<hash values> <filename>.gz"
local_list="<hash values> <filename>.gz"

しかし今、私は両方のリストにあるものを比較する必要があります。do two で考えていましfor'sたが、これは良いアプローチ (そして効率的なアプローチ) なのだろうかと思います。

これまでのところ、私はこれをしました:

#!/bin/bash
datacenter="amazon"
hostname=`hostname`;
path="backup/server245"

s3=`s3cmd ls --list-md5 s3://company-backup/company/"$datacenter"/"$hostname"/"$path"/`;
s3_list=$(echo "$s3" | tr -s ' ' | cut -d ' ' -f 4,5 | sed 's= .*/= =');
echo "$s3_list"

locally=`md5sum /"$path"/*.gz`;
echo "$locally";

locally_list=$(echo "$locally" | sed 's= .*/= =');
echo "$locally_list";

これにより、次の出力が得られます。

d41d8cd98f00b204e9800998ecf8427e #md5 from remote folder
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz #remote file
541b1bf78682f48867cc99dbb53c4c3a app.20121118040001.gz #remote file
31d90af7969f5003b27f68e27e7f2cb1 app.gz #remote file
31d90af7969f5003b27f68e27e7f2cb1  /backup/server245/app.gz #local file

両方の場所にあるのでapp.gz、ローカルのマシンから削除できます。アイデアや提案はありますか?

4

1 に答える 1

1

md5sum とファイル名の両方が同じ場合にのみ一致すると考える場合、それは簡単です。

sort remote_list local_list | uniq -d > duplicate_list

(重要な注意: これは、どちらのファイル リストにも繰り返しがないことを前提としています。md5sums を正しく実行していれば、繰り返しがあるはずはありません。)

于 2013-05-23T01:39:38.960 に答える