加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本重复数据删除

发布时间:2020-12-15 21:45:08 所属栏目:安全 来源:网络整理
导读:我有一个 shell脚本.一个cron作业每天运行一次.目前它只是使用wget从Web下载文件,将时间戳附加到文件名,然后压缩它.基本的东西. 此文件不会经常更改,因此我想丢弃已下载的文件(如果已存在). 最简单的方法吗? 谢谢! 解决方法 你真的需要压缩文件吗? wget提
我有一个 shell脚本.一个cron作业每天运行一次.目前它只是使用wget从Web下载文件,将时间戳附加到文件名,然后压缩它.基本的东西.

此文件不会经常更改,因此我想丢弃已下载的文件(如果已存在).

最简单的方法吗?

谢谢!

解决方法

你真的需要压缩文件吗?
wget提供-N,– timestamping,显然,打开时间戳.这样做是说您的文件位于www.example.com/file.txt

你第一次这样做:

$wget -N www.example.com/file.txt
[...]
[...] file.txt saved [..size..]

下次会是这样的:

$wget -N www.example.com/file.txt
Server file no newer than local file “file.txt” -- not retrieving.

除非服务器上的文件已更新.

如果您没有压缩文件,这将解决您的问题.
如果你真的需要压缩它,那么我想我会去比较新文件/存档和旧文件的哈希值.在这种情况下重要的是,下载的文件有多大?是否值得压缩它然后检查哈希?是否值得解压缩旧档案并比较哈希值?将旧哈希存储在txt文件中更好吗?所有这些都有覆盖旧文件的优势吗?

你只知道,做一些测试.

因此,如果你采用哈希方式,请考虑sha256和xz(lzma2算法)压缩.
我会做这样的事情(在Bash中):

newfilesum="$(wget -q www.example.com/file.txt -O- | tee file.txt | sha256sum)"
oldfilesum="$(xzcat file.txt.xz | sha256sum)"
if [[ $newfilesum != $oldfilesum ]]; then
    xz -f file.txt # overwrite with the new compressed data
else
    rm file.txt
fi

那已经完成了;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读