我检查nrpe
我nagios
备份的文件,并发送到Amazon S3
。我有两个文件,s3
,其中列出了我在 Amazon 中已经拥有的所有文件。 并且local
列出了我机器中的所有文件。我需要知道 中有哪些文件local
, 中没有哪些文件s3
。示例:
s3
2013-07-01 04:49 145 32ddd73694ab610c3f077a88fb9f3300 s3://company-backup/company-logs/file.1.gz
2013-07-01 04:57 145 68adf73694ab610c3f077a88fb9f3300 s3://company-backup/company-logs/file.2.gz
2013-07-01 05:12 145 36ede43644ab710c8f077a88fb9f3300 s3://company-backup/company-logs/file.3.gz
当地的
32ddd73694ab610c3f077a88fb9f3300 /company-logs/file.1.gz
68adf73694ab610c3f077a88fb9f3300 /company-logs/file.2.gz
36ede43644ab710c8f077a88fb9f3300 /company-logs/file.3.gz
72ede57455eb850c8f078a88fb9f5900 /company-logs/file.4.gz
请注意,这72ede57455eb850c8f078a88fb9f5900 /company-logs/file.4.gz
不在s3
文件中。而这正是应该返回给我的,我该怎么做呢?
谢谢你!
答案1
一句话:
diff <(awk '{print $4}' s3 | sort) <(awk '{print $1}' local | sort)
基本上,它的作用是比较 的输出awk
,我们将分别使用它来打印文件的第四列和第一列。如果哈希值的顺序不同,我们需要对输出进行排序。语法<(…)
是进程替换,允许我们在两个命令的输出上运行diff
,而通常它只允许您处理文件。
它输出:
<
---
> 72ede57455eb850c8f078a88fb9f5900
因此您会知道72ede57455eb850c8f078a88fb9f5900
只在“正确”的文件中,即local
。