zip、tar 命令加密和解密压缩文件,这样别人即使拿到了压缩文件,也没法破解里面的数据库密码和数据。

 

测试树形目录

$ cd mimvp-blog/
$ tree
.
|____111.txt
|____222.txt
|____333.txt
|____folder01
| |____111.txt
| |____222.txt
| |____333.txt
|____folder02
| |____111.txt
| |____222.txt
| |____333.txt
|____folder03
| |____111.txt
| |____222.txt
| |____333.txt

 

zip 命令的解压缩不加密

语法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b < 工 作目录>][-ll][-n < 字 尾字符串>][-t < 日 期时间>][-< 压 缩效率>][压 缩文件][文件...][-i < 范本样式>][-x < 范本样式>]

说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具 有".zip"扩展名 的压缩文件。

zip -9r mimvp-blog.zip mimvp-blog                        // 压缩文件夹, -9 表示最高级别压缩率, -r 表示递归压缩目录

zip -9r mimvp-blog.zip mimvp-blog -x ".svn/*"     // 压缩文件夹,排除不包含 .svn 目录下的所有文件或子目录

unzip mimvp-blog.zip -d mimvp-blog_zip             // 解压文件,-d 指定解压存储的目录路径

 

示例演示:

1)压缩目录

$ zip -9r mimvp-blog.zip mimvp-blog
  adding: mimvp-blog/ (stored 0%)
  adding: mimvp-blog/111.txt (stored 0%)
  adding: mimvp-blog/222.txt (stored 0%)
  adding: mimvp-blog/333.txt (stored 0%)
  adding: mimvp-blog/folder01/ (stored 0%)
  adding: mimvp-blog/folder01/111.txt (stored 0%)
  adding: mimvp-blog/folder01/222.txt (stored 0%)
  adding: mimvp-blog/folder01/333.txt (stored 0%)
  adding: mimvp-blog/folder02/ (stored 0%)
  adding: mimvp-blog/folder02/111.txt (stored 0%)
  adding: mimvp-blog/folder02/222.txt (stored 0%)
  adding: mimvp-blog/folder02/333.txt (stored 0%)
  adding: mimvp-blog/folder03/ (stored 0%)
  adding: mimvp-blog/folder03/111.txt (stored 0%)
  adding: mimvp-blog/folder03/222.txt (stored 0%)
  adding: mimvp-blog/folder03/333.txt (stored 0%)

2)解压文件

$ unzip mimvp-blog.zip -d mimvp-blog_zip
Archive:  mimvp-blog.zip
   creating: mimvp-blog_zip/mimvp-blog/
 extracting: mimvp-blog_zip/mimvp-blog/111.txt  
 extracting: mimvp-blog_zip/mimvp-blog/222.txt  
 extracting: mimvp-blog_zip/mimvp-blog/333.txt  
   creating: mimvp-blog_zip/mimvp-blog/folder01/
 extracting: mimvp-blog_zip/mimvp-blog/folder01/111.txt  
 extracting: mimvp-blog_zip/mimvp-blog/folder01/222.txt  
 extracting: mimvp-blog_zip/mimvp-blog/folder01/333.txt  
   creating: mimvp-blog_zip/mimvp-blog/folder02/
 extracting: mimvp-blog_zip/mimvp-blog/folder02/111.txt  
 extracting: mimvp-blog_zip/mimvp-blog/folder02/222.txt  
 extracting: mimvp-blog_zip/mimvp-blog/folder02/333.txt  
   creating: mimvp-blog_zip/mimvp-blog/folder03/
 extracting: mimvp-blog_zip/mimvp-blog/folder03/111.txt  
 extracting: mimvp-blog_zip/mimvp-blog/folder03/222.txt  
 extracting: mimvp-blog_zip/mimvp-blog/folder03/333.txt  

 

3)zip 命令参数:

-A   调整可执行的自动解压缩文件。
-b<工作目录>   指定暂时存放文件的目录。
-c   替每个被压缩的文件加上注释。
-d   从压缩文件内删除指定的文件。
-D   压缩文件内不建立目录名称。
-f   此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F   尝试修复已损坏的压缩文件。
-g   将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h   在线帮助。
-i<范本样式>   只压缩符合条件的文件。
-j   只保存文件名称及其内容,而不存放任何目录名称。
-J   删除压缩文件前面不必要的数据。
-k   使用MS-DOS兼容格 式的文件名称。
-l   压缩文件时,把LF字符 置换成LF+CR字 符。
-ll   压缩文件时,把LF+CR字 符置换成LF字符。
-L   显示版权信息。
-m   将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串>   不压缩具有特定字尾字符串的文件。
-o   以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-P   添加压缩密码,解压必须匹配密码解压,防止被人破解压缩文件
-q   不显示指令执行过程。
-r   递归处理,将指定目录下的所有文件和子目录一并处理。
-S   包含系统和隐藏文件。
-t<日期时间>   把压缩文件的日期设成指定的日期。
-T   检查备份文件内的每个文件是否正确无误。
-u   更换较新的文件到压缩文件内。
-v   显示指令执行过程或显示版本信息。
-V   保存VMS操作系统的文 件属性。
-w   在文件名称里假如版本编号,本参数仅在VMS操 作系统下有效。
-x   压缩时排除符合条件的文件
-X   不保存额外的文件属性。
-y   直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之 类的系统下有效。
-z   替压缩文件加上注释。
-$   保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率>   压缩效率是一个介于1-9的数值。

 

 

zip 命令的加密解压缩加密

1)zip 加密压缩

zip -9r -P'123456' mimvp-blog_pwd.zip mimvp-blog       // -P'123456' 添加了压缩密码,解压时需输入密码

 

2)unzip 加密解压

unzip -P'123456' mimvp-blog_pwd.zip -d mimvp-blog_zip_pwd     // -P'123456' 输入密码进行解压

若命令行里不输入参数 -P,则解压时会提示输入密码

$ unzip mimvp-blog_pwd.zip -d mimvp-blog_zip_pwd3           // unzip 解压不带-P,会提示输入解压密码(实际暴露了zip是加密后的文件
Archive:  mimvp-blog_pwd.zip
   creating: mimvp-blog_zip_pwd3/mimvp-blog/
[mimvp-blog_pwd.zip] mimvp-blog/111.txt password:             // 输入密码错误(1234)
password incorrect--reenter:     // 输入密码错误(12345)
password incorrect--reenter:     // 输入密码正确(123456)
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/111.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/222.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/333.txt  
   creating: mimvp-blog_zip_pwd3/mimvp-blog/folder01/
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder01/111.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder01/222.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder01/333.txt  
   creating: mimvp-blog_zip_pwd3/mimvp-blog/folder02/
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder02/111.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder02/222.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder02/333.txt  
   creating: mimvp-blog_zip_pwd3/mimvp-blog/folder03/
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder03/111.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder03/222.txt  
 extracting: mimvp-blog_zip_pwd3/mimvp-blog/folder03/333.txt  

 

 

tar 命令的解压缩不加密

1)tar 压缩目录

tar zcvf mimvp-blog.tar.gz mimvp-blog

 

示例演示:

$ tar zcvf mimvp-blog.tar.gz mimvp-blog
a mimvp-blog
a mimvp-blog/111.txt
a mimvp-blog/222.txt
a mimvp-blog/333.txt
a mimvp-blog/folder01
a mimvp-blog/folder02
a mimvp-blog/folder03
a mimvp-blog/folder03/111.txt
a mimvp-blog/folder03/222.txt
a mimvp-blog/folder03/333.txt
a mimvp-blog/folder02/111.txt
a mimvp-blog/folder02/222.txt
a mimvp-blog/folder02/333.txt
a mimvp-blog/folder01/111.txt
a mimvp-blog/folder01/222.txt
a mimvp-blog/folder01/333.txt

 

2)tar 解压文件

tar解压到指定目录,共分两步:

a)创建目标目录:mkdir mimvp-blog_tar

b)解压到指定目录:tar zxvf mimvp-blog.tar.gz -C mimvp-blog_tar      // -C 需先创建指定目录

$ mkdir mimvp-blog_tar
$ tar zxvf mimvp-blog.tar.gz -C mimvp-blog_tar                  
x mimvp-blog/
x mimvp-blog/111.txt
x mimvp-blog/222.txt
x mimvp-blog/333.txt
x mimvp-blog/folder01/
x mimvp-blog/folder02/
x mimvp-blog/folder03/
x mimvp-blog/folder03/111.txt
x mimvp-blog/folder03/222.txt
x mimvp-blog/folder03/333.txt
x mimvp-blog/folder02/111.txt
x mimvp-blog/folder02/222.txt
x mimvp-blog/folder02/333.txt
x mimvp-blog/folder01/111.txt
x mimvp-blog/folder01/222.txt
x mimvp-blog/folder01/333.txt

 

3)tar 命令常见参数

-c :create 建立压缩档案的参数;
-C : 创建解压后指定的存储目录;
-x : 解压缩压缩档案的参数;
-z : 是否需要用gzip压缩;
-v: 压缩的过程中显示档案;
-f: 置顶文档名,在f后面立即接文件名,不能再加参数

 

 

tar 命令的加密解压缩加密

tar 命令没有参数直接指定压缩密码,需要借助 openssl 来实现加密压缩和解压

1)tar 加密压缩

tar zcvf - mimvp-blog | openssl des3 -salt -k '123456' -out mimvp-blog_pwd.tar.gz

 

2)tar 加密解压

openssl des3 -d -k '123456' -salt -in mimvp-blog_pwd.tar.gz | tar zxvf -

或者解压到指定目录

mkdir mimvp-blog_tar_pwd
openssl des3 -d -k
'123456' -salt -in mimvp-blog_pwd.tar.gz | tar zxvf - -C mimvp-blog_tar_pwd

需要注意:

1)tar 是通过 openssl 实现的加密

2)tar 可以加密压缩目录(mimvp-blog),或者文件

3)tar zxvf -  中的横杠(-)表示全部文件和目录

 

若命令行里不输入参数 -P,则解压时会提示错误

$ tar zxvf mimvp-blog_pwd.tar.gz 
tar: Unrecognized archive format
tar: Error exit delayed from previous errors.

这是因为通过 tar 压缩后,通过了 openssl 加密,已经不再是 tar 格式,所以提示不认识文件格式

tar 加密压缩比zip加密压缩的优势也体现出来了,zip 加密后解压时会提示已加密,但 tar 不会提示已加密,更能迷惑别人

 

 

zip 和 tar 压缩对比

$ ll
drwxr-xr-x   8 homer  staff       272  9 14 17:45 mimvp-blog                            // 原目录
-rw-r--r--   1 homer  staff       405  9 14 18:31 mimvp-blog.tar.gz                     // tar 普通压缩
-rw-r--r--   1 homer  staff      2866  9 14 18:13 mimvp-blog.zip                        // zip 普通压缩
-rw-r--r--   1 homer  staff     10264  9 14 19:03 mimvp-blog_pwd.tar.gz          // tar 加密压缩
-rw-r--r--   1 homer  staff      3202  9 14 18:22 mimvp-blog_pwd.zip               // zip 加密压缩
drwxr-xr-x   3 homer  staff       102  9 14 18:36 mimvp-blog_tar                      // tar 普通解压
drwxr-xr-x   3 homer  staff       102  9 14 19:06 mimvp-blog_tar_pwd             // tar 加密解压
drwxr-xr-x   3 homer  staff       102  9 14 18:19 mimvp-blog_zip                     // zip 普通解压
drwxr-xr-x   3 homer  staff       102  9 14 18:24 mimvp-blog_zip_pwd            // zip 加密解压

从上面的压缩对比看, tar 压缩率比 zip 高,mimvp-blog.tar.gz(405字节),mimvp-blog.zip(2866字节)

但是若加密后,tar 加密的文件比 zip加密后的文件大,主要 openssl des3 加密长度较长,若原目录足够大,tar 压缩比仍然较高

 

 

总结

米扑为了备份 wordpress 数据库和文件,研究了 《cp、tar 命令排除文件和子目录》 和 《zip、tar 命令加密和解密压缩文件

结合cp、tar 的排查拷贝、压缩、加密压缩,完全可以在本地循环备份WP,然后把加密的zip、tar上传至阿里云、腾讯云、七牛、百度网盘等

后续,米扑博客将会继续分享如何上传 zip、tar 文件到阿里云、腾讯云、七牛、百度网盘等

 

 

参考推荐

cp、tar 命令排除文件和子目录

Linux下tar、bz、gz等压缩包的压缩和解压

Windows如何压缩tar.gz格式

Python学习入门(16)——zipfile

ZIP压缩算法详细分析及解压实例

WordPress:开启gzip压缩方法

Apache 启用 GZIP 压缩网页传输方法