工作中使用到的文件及转换技巧

举报
DRS技术快客 发表于 2021/06/30 21:05:29 2021/06/30
【摘要】 在做文件处理的时候,我们经常会使用到压缩,加密,校验压缩:就是对数据以一种更省字节的方式做一个无损转换,举例字符串AAAAAAAAA,我们需要9个字符,我们用9*A来表示的时候,只需要3个字符,常用的文件压缩的工具有zip, tar加密:就是对数据做一个映射或其它复杂的可逆转换,举例字符串AAAAAAAAA,我们通过一个映射表(密码规则),把数据转换成了aaaaaaaaa,这时数据跟原来的数...

在做文件处理的时候,我们经常会使用到压缩,加密,校验
压缩:就是对数据以一种更省字节的方式做一个无损转换,举例字符串AAAAAAAAA,我们需要9个字符,我们用9*A来表示的时候,只需要3个字符,常用的文件压缩的工具有zip, tar
加密:就是对数据做一个映射或其它复杂的可逆转换,举例字符串AAAAAAAAA,我们通过一个映射表(密码规则),把数据转换成了aaaaaaaaa,这时数据跟原来的数据不一样了,但是可以通过逆向的方式还原出原来的数据,常用的相关的工具有base64, xdd, 及一些rsa, des等加密工具
校验:就是对数据取一个指纹,通过一个循环计算得到一个简短的串,不同的数据流,得到的指纹数据是不一样的,比如AAAAAAAAA,我们用三个字符循环取与得到AAA,这时我们是无法根据结果恢复出原来的数据的,常用的取指纹工具有md5sum, sha256,crc等

功能使用

#####压缩
压缩就是用一定的技术手段,把数据中重复的的片段,精简的方式转换一下
把文件压缩

> tar czf settings.xml.tar.gz settings.xml
> du -shb settings.xml*
3810    settings.xml
856     settings.xml.tar.gz

解压缩文件

> tar -xf settings.xml.tar.gz
编码转换

编码转换有简单编码,还有加密,包括对称加密和非对称加密

编码

简单加密,类似base64, hex之类的,其实原则上不属于加密,只属于转换,就是把二进制的内容转换成64进制,或者16进制的
因为64进制或者16进制为可见字符,所以一般可以把不可见字符转换成可见字符,例如可以用base64把一个图片,或者文件转换成纯文本来拷贝一个文件

> base64 -w 2000 settings.xml.tar.gz
H4sIAAAAAAAAA+1XyW7bMBD1tfoKwXdL8pKlhqIAbdqgQNIacVr0yki0zVYWBZKy5UOBfnpH1GJJZpwYzXbggw+efYYzFEmOhSDRnFvpMuw8ExzA8WjU+ZsRf4zhyHH68JN8wMlwNOj0R87xiTM4HgxHHaffHw6OOqbzXAnVkXCBmGl2Fo5zNDp53x++RNC3A/ccGm+uMOOERmfdvuV0TRz5NIChOOt+v/3cO+2ee4bh8mJQTNCP+Fl3IUQ8tu0lWuHIQjHyF9iibG5PP93efvl6ObXBFTgzzArScJxyUhmv12trPZRmAxgI++f11RT8LFGPRNCWyMcNe07GXIqvqI+EzPdxWZj3qaU8sMvCelLVAlbXk1HdEMKENzimnAjKNt7F2F6uoh6rOK7dVjGM3JTOZiGJsDdDIceuXZK5MA6TOYkuGU1i7hUGtooZM5oSXNNp0hyzrHEFWWN5tVUDJgk8FnDIO8QoywbopkICZhFaYi9NU9euqKZSjDhfUxbkShW1jW23g+/Nhkco5gtKxcvkU1LV4i0JY1SSW4uct5uvjyPBUKjIVOZ1nY2V+bFUUuSasNArZhCyTa1FgtaYWD5d2ogJMkN+Nj2ZrCdntBcndyHxbSgeLJu+8iS/zbZZVZxa7WUpRp2sD9aMhLgxOgVvt/oArxSVV7tADqTZwla82RWWjtvl7kY5cJ2far3fZXCL/aKoroqDI3QX4sATLIF9VVLqnOz9/txiQ4gnipevQxwggScUatt4KFyjDYcS68x7ct2TTFbItrfFSh3e7MFB3R7odr+Jdu9IH9P6CaNB4oveRK56bwofYuIrzqHKRrY6LqzKb8P/91+dh+ojWytPD8VBQ1GTkMb5IoX5Jedm/9HRUnqNA+RJT+zK5xsepuKe+kDAvROxv2078uZ0yLttfv14xI3kV/AbbuunilsJtIWs5NtAkaIU4g+bCzxDSSiKRW5zd+0gnCfDZX9aVd0XMEs+xjApyhHPHyIwTDHUxyxOE+bjPIZa9KALeMTOsVC6KEQPuij//Mgfg0pfbZ12jxVFt1tb0dVtNO/ApOK2GlYI8ntok2XUmlBzYLjVq84zXvuFraGhoaGhoaGhoaGhoaGhoaGhoaGhofHy+AcKND6KACgAAA==

或者把文本还原成文件

> text="H4sIAAAAAAAAA+1XyW7bMBD1tfoKwXdL8pKlhqIAbdqgQNIacVr0yki0zVYWBZKy5UOBfnpH1GJJZpwYzXbggw+efYYzFEmOhSDRnFvpMuw8ExzA8WjU+ZsRf4zhyHH68JN8wMlwNOj0R87xiTM4HgxHHaffHw6OOqbzXAnVkXCBmGl2Fo5zNDp53x++RNC3A/ccGm+uMOOERmfdvuV0TRz5NIChOOt+v/3cO+2ee4bh8mJQTNCP+Fl3IUQ8tu0lWuHIQjHyF9iibG5PP93efvl6ObXBFTgzzArScJxyUhmv12trPZRmAxgI++f11RT8LFGPRNCWyMcNe07GXIqvqI+EzPdxWZj3qaU8sMvCelLVAlbXk1HdEMKENzimnAjKNt7F2F6uoh6rOK7dVjGM3JTOZiGJsDdDIceuXZK5MA6TOYkuGU1i7hUGtooZM5oSXNNp0hyzrHEFWWN5tVUDJgk8FnDIO8QoywbopkICZhFaYi9NU9euqKZSjDhfUxbkShW1jW23g+/Nhkco5gtKxcvkU1LV4i0JY1SSW4uct5uvjyPBUKjIVOZ1nY2V+bFUUuSasNArZhCyTa1FgtaYWD5d2ogJMkN+Nj2ZrCdntBcndyHxbSgeLJu+8iS/zbZZVZxa7WUpRp2sD9aMhLgxOgVvt/oArxSVV7tADqTZwla82RWWjtvl7kY5cJ2far3fZXCL/aKoroqDI3QX4sATLIF9VVLqnOz9/txiQ4gnipevQxwggScUatt4KFyjDYcS68x7ct2TTFbItrfFSh3e7MFB3R7odr+Jdu9IH9P6CaNB4oveRK56bwofYuIrzqHKRrY6LqzKb8P/91+dh+ojWytPD8VBQ1GTkMb5IoX5Jedm/9HRUnqNA+RJT+zK5xsepuKe+kDAvROxv2078uZ0yLttfv14xI3kV/AbbuunilsJtIWs5NtAkaIU4g+bCzxDSSiKRW5zd+0gnCfDZX9aVd0XMEs+xjApyhHPHyIwTDHUxyxOE+bjPIZa9KALeMTOsVC6KEQPuij//Mgfg0pfbZ12jxVFt1tb0dVtNO/ApOK2GlYI8ntok2XUmlBzYLjVq84zXvuFraGhoaGhoaGhoaGhoaGhoaGhoaGhofHy+AcKND6KACgAAA=="
> echo $text |base64 -d > settings.xml.tar.gz

也可以用xxd工具做类似操作

加密

我们可以借助openssl工具,来对文件进行加密解决操作,例如利用aes256进行加密,加密的时候,需要输入两次密码

> openssl enc -e -aes256 -in settings.xml -out settings.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

解密

> openssl enc -d -aes256 -in settings.enc -out settings.xml.1
enter aes-256-cbc decryption password:

对比文件,数据一致

> diff settings.xml settings.xml.1

也可以用其它的对称加密算法来进行加密,或者用非对称加密算法加密

校验

有时候,一个文件很大,或者文件是二进制的,我们想对比两个文件是否相同,这个时候可以使用md5sum,或者sha来对文件取个“指纹”信息,然后对比两个“指纹”是否一致来判定文件是否一致

> md5sum settings.xml*
c59bb5a770b9082d83eaf76abc687e09  settings.xml
c59bb5a770b9082d83eaf76abc687e09  settings.xml.1
>sha256sum settings.xml*
c308b1a8032405e9044546b5743a97bd96c61b2ab36370a01719a6417ba20f18  settings.xml
c308b1a8032405e9044546b5743a97bd96c61b2ab36370a01719a6417ba20f18  settings.xml.1

使用场景

有的时候,当我们无法使用scp的时候,我们可以通过base64把文件转换成字符串,然后到目标机器上再把字符串转换成文件
有的时候,当我们要校验两个MySQL数据库的表数据是否一致的时候,除了校验数据的值之外,也可以通过查询两边数据的checkSum值,如果checkSum值一致,一般就认为两边数据一致了
有的时候,当我们想看一个数据库中的binary的内容的时候,可能直接查询出来会显示乱码,甚至格式错乱,这个时候,我们可以使用hex函数来把内容显示出来
因此灵活使用一些数据转换工具或者函数,能解决很多很现实的问题

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。