重要提醒:系统检测到您的帐号可能存在被盗风险,请尽快查看风险提示,并立即修改密码。 | 关闭

网易博客安全提醒:系统检测到您当前密码的安全性较低,为了您的账号安全,建议您适时修改密码 立即修改 | 关闭

dragonflover的博客

财富的天下,天下的财富,我保留,你拿走! 在Linux的环境中,压缩文件案的扩展名大多是:

*.Z compress 程序压缩的文件;

*.gz gzip 程序压缩的文件;

*.bz2 bzip2 程序压缩的文件;

*.tar tar 程序打包的数据,并没有压缩过;

*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩

*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩

Linux上常见的压缩指令就是 gzip 与 bzip2 ,至于 compress 已经退流行了。

gzip, zcat

gzip 可以说是应用度最广的压缩指令了!目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至于 gzip 所建立的压缩文件为 *.gz 的档名喔!让我们来看看这个指令的语法吧:

[root@www ~]# gzip [-cdtv#] 档名

[root@www ~]# zcat 档名.gz

选项与参数:

-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;

-d :解压缩的参数;

-t :可以用来检验一个压缩文件的一致性~看看文件有无错误;

-v :可以显示出原文件/压缩文件案的压缩比等信息;

-# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

范例一:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩

[root@www ~]# cd /tmp

[root@www tmp]# cp /etc/man.config .

[root@www tmp]# gzip -v man.config

man.config: 56.1% -- replaced with man.config.gz

[root@www tmp]# ll /etc/man.config /tmp/man*

-rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config

-rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z

-rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz <==gzip压缩比较佳

范例二:由于 man.config 是文本文件,请将范例一的压缩文件的内容读出来!

[root@www tmp]# zcat man.config.gz

# 由于 man.config 这个原本的文件是是文本文件,因此我们可以尝试使用 zcat 去读取!

# 此时屏幕上会显示 man.config.gz 解压缩之后的文件内容!

范例三:将范例一的文件解压缩

[root@www tmp]# gzip -d man.config.gz

# 不要使用 gunzip 这个指令,不好背!使用 gzip -d 来进行解压缩!

# 与 gzip 相反, gzip -d 会将原本的 .gz 删除,产生原本的 man.config 文件。

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件

[root@www tmp]# gzip -9 -c man.config > man.config.gz

bzip2, bzcat

若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。 bzip2 真是很不错用的东西~这玩意的压缩比竟然比 gzip 还要好~至于 bzip2 的用法几乎与 gzip 相同! 看看底下的用法吧!

[root@www ~]# bzip2 [-cdkzv#] 档名

[root@www ~]# bzcat 档名.bz2

选项与参数:

-c :将压缩的过程产生的数据输出到屏幕上!

-d :解压缩的参数

-k :保留源文件,而不会删除原始的文件喔!

-z :压缩的参数

-v :可以显示出原文件/压缩文件案的压缩比等信息;

-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩

[root@www tmp]# bzip2 -z man.config

# 此时 man.config 会变成 man.config.bz2 !

范例二:将范例一的文件内容读出来!

[root@www tmp]# bzcat man.config.bz2

# 此时屏幕上会显示 man.config.bz2 解压缩之后的文件内容!!

范例三:将范例一的文件解压缩

[root@www tmp]# bzip2 -d man.config.bz2

范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件

[root@www tmp]# bzip2 -9 -c man.config > man.config.bz2

tar-打包指令:

[root@www ~]# tar [-j|-z] [cv] [-f 建立的档名] filename... <==打包与压缩

[root@www ~]# tar [-j|-z] [tv] [-f 建立的档名] <==察看档名

[root@www ~]# tar [-j|-z] [xv] [-f 建立的档名] [-C 目录] <==解压缩

选项与参数:

-c :建立打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)

-t :察看打包文件的内容含有哪些文件名,重点在察看『文件名』就是了;

-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开

特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。

-j :透过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2

-z :透过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz

-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!

-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!

-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

其他后续练习会使用到的选项介绍:

-p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

-P :保留绝对路径,亦即允许备份数据中含有根目录存在之意;

--exclude=FILE:在压缩的过程中,不要将 FILE 打包!

其实最简单的使用 tar 就只要记忆底下的方式即可:

压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称

查 询:tar -jtv -f filename.tar.bz2

解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

使用 tar 加入 -j 或 -z 的参数备份 /etc/ 目录

有事没事备份一下 /etc 这个目录是件好事!备份 /etc 最简单的方法就是使用 tar 啰!让我们来玩玩先:

[root@www ~]# tar -zpcv -f /root/etc.tar.gz /etc

tar: Removing leading `/' from member names <==注意这个警告讯息

/etc/

....中间省略....

/etc/esd.conf

/etc/crontab

# 由于加上 -v 这个选项,因此正在作用中的文件名就会显示在屏幕上。

# 如果你可以翻到第一页,会发现出现上面的错误讯息!底下会讲解。

# 至于 -p 的选项,重点在于『保留原本文件的权限与属性』之意。

[root@www ~]# tar -jpcv -f /root/etc.tar.bz2 /etc

# 显示的讯息会跟上面一模一样啰!

[root@www ~]# ll /root/etc*

-rw-r--r-- 1 root root 8740252 Nov 15 23:07 /root/etc.tar.bz2

-rw-r--r-- 1 root root 13010999 Nov 15 23:01 /root/etc.tar.gz

[root@www ~]# du -sm /etc

118 /etc

# 为什么建议您使用 -j 这个选项?从上面的数值你可以知道了吧?^_^

查阅 tar 文件的数据内容(可察看文件名),与备份文件名有否根目录的意义

[root@www ~]# tar -jtv -f /root/etc.tar.bz2

如果你确定你就是需要备份根目录到 tar 的文件中,那可以使用 -P (大写) 这个选项,请看底下的例子分析:

范例:将文件名中的(根)目录也备份下来,并察看一下备份档的内容文件名

[root@www ~]# tar -jpPcv -f /root/etc.and.root.tar.bz2 /etc

....中间过程省略....

[root@www ~]# tar -jtf /root/etc.and.root.tar.bz2

/etc/dbus-1/session.conf

/etc/esd.conf

/etc/crontab

# 这次查阅文件名不含 -v 选项,所以仅有文件名而已!没有详细属性/权限等参数。

例题:系统备份范例

系统上有非常多的重要目录需要进行备份,而且其实我们也不建议你将备份数据放置到 /root 目录下! 假设目前你已经知道重要的目录有底下这几个:

/etc/ (配置文件)

/home/ (用户的家目录)

/var/spool/mail/ (系统中,所有账号的邮件信箱)

/var/spool/cron/ (所有账号的工作排成配置文件)

/root (系统管理员的家目录)

然后我们也知道,/home/loop* 不需要备份,而且 /root 底下的压缩文件也不需要备份,另外假设你要将备份的数据放置到 /backups ,并且该目录仅有 root 有权限进入! 此外,每次备份的文件名都希望不相同,例如使用:backup-system-20091130.tar.bz2 之类的文件名来处理。 那你该如何处理这个备份数据呢?

# 1. 先处理要放置备份数据的目录与权限:

[root@www ~]# mkdir /backups

[root@www ~]# chmod 700 /backups

[root@www ~]# ll -d /backups

drwx------ 2 root root 4096 Nov 30 16:35 /backups

# 2. 假设今天是 2009/11/30 ,则建立备份的方式如下:

[root@www ~]# tar -jcv -f /backups/backup-system-20091130.tar.bz2 \

> --exclude=/root/*.bz2 --exclude=/root/*.gz --exclude=/home/loop* \

> /etc /home /var/spool/mail /var/spool/cron /root

....(过程省略)....

[root@www ~]# ll -h /backups/

-rw-r--r-- 1 root root 8.4M Nov 30 16:43 backup-system-20091130.tar.bz2

dump-完整备份工具:

某些时刻你想要针对文件系统进行备份或者是储存的功能时,不能不谈到这个 dump 指令!

用 dump 备份完整的文件系统

[root@www ~]# dump [-Suvj] [-level] [-f 备份档] 待备份资料

[root@www ~]# dump -W

选项与参数:

-S :仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕;

-u :将这次 dump 的时间记录到 /etc/dumpdates 文件中;

-v :将 dump 的文件过程显示出来;

-j :加入 bzip2 的支持!将数据进行压缩,默认 bzip2 压缩等级为 2

-level:就是我们谈到的等级,从 -0 ~ -9 共十个等级;

-f :有点类似 tar 啦!后面接产生的文件,亦可接例如 /dev/st0 装置文件名等

-W :列出在 /etc/fstab 里面的具有 dump 设定的 partition 是否有备份过?

现在就让我们来做几个范例吧!假如你要将系统的最小的文件系统捉出来进行备份,那该如何进行呢?

# 1. 先找出系统中最小的那个文件系统,如下所示:

[root@www ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hdc2 9.5G 3.7G 5.3G 42% /dev/hdc3 4.8G 651M 3.9G 15% /home

/dev/hdc1 99M 11M 83M 12% /boot <==看起来最小的就是他啦!

tmpfs 363M 0 363M 0% /dev/shm

# 2. 先测试一下,如果要备份此文件系统,需多少容量?

[root@www ~]# dump -S /dev/hdc1

5630976 <==注意一下,这个单位是 bytes ,所以差不多是 5.6MBytes。

# 3. 将完整备份的文件名记录成为 /root/boot.dump ,同时更新记录文件:

[root@www ~]# dump -0u -f /root/boot.dump /boot

DUMP: Date of this level 0 dump: Tue Dec 2 02:53:45 2008 <==记录等级与备份时间

DUMP: Dumping /dev/hdc1 (/boot) to /root/boot.dump <==dump的来源与目标

DUMP: Label: /boot <==文件系统的 label

DUMP: Writing 10 Kilobyte records

DUMP: mapping (Pass I) [regular files] <==开始进行文件对应

DUMP: mapping (Pass II) [directories]

DUMP: estimated 5499 blocks. <==评估整体block数量

DUMP: Volume 1 started with block 1 at: Tue Dec 2 02:53:46 2008

DUMP: dumping (Pass III) [directories] <==开始 dump 工作

DUMP: dumping (Pass IV) [regular files]

DUMP: Closing /root/boot.dump <==结束写入备份档

DUMP: Volume 1 completed at: Tue Dec 2 02:53:47 2008

DUMP: Volume 1 5550 blocks (5.42MB) <==最终备份数据容量

DUMP: Volume 1 took 0:00:01

DUMP: Volume 1 transfer rate: 5550 kB/s

DUMP: 5550 blocks (5.42MB) on 1 volume(s)

DUMP: finished in 1 seconds, throughput 5550 kBytes/sec

DUMP: Date of this level 0 dump: Tue Dec 2 02:53:45 2008

DUMP: Date this dump completed: Tue Dec 2 02:53:47 2008

DUMP: Average transfer rate: 5550 kB/s

DUMP: DUMP IS DONE

# 在指令的下达方面,dump 后面接 /boot 或 /dev/hdc1 都可以的!

# 而执行 dump 的过程中会出现如上的一些讯息,您可以自行仔细的观察!

[root@www ~]# ll /root/boot.dump /etc/dumpdates

-rw-rw-r-- 1 root disk 43 Dec 2 02:53 /etc/dumpdates

-rw-r--r-- 1 root root 5683200 Dec 2 02:53 /root/boot.dump

# 由于加上 -u 的选项,因此 /etc/dumpdates 该文件的内容会被更新!注意,

# 这个文件仅有在 dump 完整的文件系统时才有支持主动更新的功能。

# 4. 观察一下系统主动建立的记录文件:

[root@www ~]# cat /etc/dumpdates

/dev/hdc1 0 Tue Dec 2 02:53:47 2008 +0800

[文件系统] [等级] [ ctime 的时间 ]

# 0. 看一下有没有任何文件系统被 dump 过的资料?

[root@www ~]# dump -W

Last dump(s) done (Dump '>' file systems):

> /dev/hdc2 ( /) Last dump: never

> /dev/hdc3 ( /home) Last dump: never

/dev/hdc1 ( /boot) Last dump: Level 0, Date Tue Dec 2 02:53:47 2008

# 如上列的结果,该结果会捉出 /etc/fstab 里面第五字段设定有需要 dump 的

# partition,然后与 /etc/dumpdates 进行比对,可以得到上面的结果啦!

# 尤其是第三行,可以显示我们曾经对 /dev/hdc1 进行过 dump 的备份动作喔!

这样很简单的就建立起来 /root/boot.dump 文件,该文件将整个 /boot/ 文件系统都备份下来了! 并且将备份的时间写入 /etc/dumpdates 文件中,准备让下次备份时可以作为一个参考依据。 现在让我们来进行一个测试,检查看看能否真的建立 level 1 的备份呢?

# 1. 先恶搞一下,建立一个大约 10 MB 的文件在 /boot 内:

[root@www ~]# dd if=/dev/zero of=/boot/testing.img bs=1M count=10

10+0 records in

10+0 records out

10485760 bytes (10 MB) copied, 0.166128 seconds, 63.1 MB/s

# 2. 开始建立差异备份档,此时我们使用 level 1 吧:

[root@www ~]# dump -1u -f /root/boot.dump.1 /boot

....(中间省略)....

[root@www ~]# ll /root/boot*

-rw-r--r-- 1 root root 5683200 Dec 2 02:53 /root/boot.dump

-rw-r--r-- 1 root root 10547200 Dec 2 02:56 /root/boot.dump.1

# 看看文件大小,岂不是就是刚刚我们所建立的那个大文件的容量吗? ^_^

# 3. 最后再看一下是否有记录 level 1 备份的时间点呢?

[root@www ~]# dump -W

Last dump(s) done (Dump '>' file systems):

> /dev/hdc2 ( /) Last dump: never

> /dev/hdc3 ( /home) Last dump: never

> /dev/hdc1 ( /boot) Last dump: Level 1, Date Tue Dec 2 02:56:33 2008

....(中间省略)....

用 dump 备份非文件系统,亦即单一目录的方法

现在让我们来处理一下 /etc 的 dump 备份吧!因为 /etc 并非单一文件系统,他只是个目录而已。 所以依据限制的说明, -u, level 1~9 都是不适用的。我们只能够使用 level 0 的完整备份将 /etc 给他 dump 下来。因此作法就变的很简单了!

# 让我们将 /etc 整个目录透过 dump 进行备份,且含压缩功能

[root@www ~]# dump -0j -f /root/etc.dump.bz2 /etc

DUMP: Date of this level 0 dump: Tue Dec 2 12:08:22 2008

DUMP: Dumping /dev/hdc2 (/ (dir etc)) to /root/etc.dump.bz2

DUMP: Label: /1

DUMP: Writing 10 Kilobyte records

DUMP: Compressing output at compression level 2 (bzlib)

DUMP: mapping (Pass I) [regular files]

DUMP: mapping (Pass II) [directories]

DUMP: estimated 115343 blocks.

DUMP: Volume 1 started with block 1 at: Tue Dec 2 12:08:23 2008

DUMP: dumping (Pass III) [directories]

DUMP: dumping (Pass IV) [regular files]

DUMP: Closing /root/etc.dump.bz2

DUMP: Volume 1 completed at: Tue Dec 2 12:09:49 2008

DUMP: Volume 1 took 0:01:26

DUMP: Volume 1 transfer rate: 218 kB/s

DUMP: Volume 1 124680kB uncompressed, 18752kB compressed, 6.649:1

DUMP: 124680 blocks (121.76MB) on 1 volume(s)

DUMP: finished in 86 seconds, throughput 1449 kBytes/sec

DUMP: Date of this level 0 dump: Tue Dec 2 12:08:22 2008

DUMP: Date this dump completed: Tue Dec 2 12:09:49 2008

DUMP: Average transfer rate: 218 kB/s

DUMP: Wrote 124680kB uncompressed, 18752kB compressed, 6.649:1

DUMP: DUMP IS DONE

# 上面特殊字体的部分显示:原本有 124680kb 的容量,被压缩成为 18752kb,

# 整个压缩比为 6.649:1 ,还可以的压缩情况啦!

restore

备份档就是在急用时可以回复系统的重要数据,所以有备份当然就得要学学如何复原了! dump 的复原使用的是 restore 这个指令!

[root@www ~]# restore -t [-f dumpfile] [-h] <==用来察看 dump 档

[root@www ~]# restore -C [-f dumpfile] [-D 挂载点] <==比较dump与实际文件

[root@www ~]# restore -i [-f dumpfile] <==进入互动模式

[root@www ~]# restore -r [-f dumpfile] <==还原整个文件系统

选项与参数:

相关的各种模式,各种模式无法混用喔!例如不可以写 -tC 啦!

-t :此模式用在察看 dump 起来的备份文件中含有什么重要数据!类似 tar -t 功能;

-C :此模式可以将 dump 内的数据拿出来跟实际的文件系统做比较,

最终会列出『在 dump 文件内有记录的,且目前文件系统不一样』的文件;

-i :进入互动模式,可以仅还原部分文件,用在 dump 目录时的还原!

-r :将整个 filesystem 还原的一种模式,用在还原针对文件系统的 dump 备份;

其他较常用到的选项功能:

-h :察看完整备份数据中的 inode 与文件系统 label 等信息

-f :后面就接你要处理的那个 dump 文件啰!

-D :与 -C 进行搭配,可以查出后面接的挂载点与 dump 内有不同的文件!

--------转载

谪居黄城中,把盏临风,牵黄擎苍叹英雄。昔日汴河风光处,履履难重。成败任西东,此恨无穷,为了豪情谁与同?一蓑烟雨平生任,踏雪飞鸿。

linux系统常见的压缩命令,Linux 系统常见的压缩指令相关推荐

  1. linux的备份和恢复命令,Linux基本命令——备份与恢复文档

    在linux系统中,最简单的备份文档的方式是cp,但当文档数目数量较多时,cp便显得力不从心,并且会占用过多的硬盘资源.在这种情况下,最好的方法便是压缩和归档.下面将详细的介绍压缩与归档两种方法. 一 ...

  2. linux启动网络服务的命令,linux重启服务命令

    linux重启服务命令 重启:service 服务名 restart 或systemctl restart 服务名 service和systemctl 1.service命令 service命令其实是 ...

  3. linux添加源ip路由命令,linux添加ip、路由相关命令

    1- Linux添加永久路由 vi /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=192.168.10.0 NETMASK0=255.255.2 ...

  4. linux系统zip压缩命令,linux zip 压缩命令

    linux   zip命令 的基本用法是: zip  [参数] [打包后的文件名] [打包的目录路径] linux   zip命令 参数列表: -a     将文件转成ASCII模式 -F     尝 ...

  5. linux ntp时间立即同步命令_Linux系统时间同步方法小结

    在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系.系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不 ...

  6. linux的常用的wc命令,Linux系统中wc命令使用详解

    Linux系统中wc命令是统计文件文本的字节数等并显示输出.下面由学习啦小编为大家整理了linux系统中wc命令使用详解,希望对大家有帮助! Linux系统中wc命令使用详解 Linux系统中的wc( ...

  7. linux系统运行级别wq命令,Linux系统运行级别和关机重启命令介绍

    Linux系统运行级别介绍 Linux系统有七种运行级别(Run Level),各个运行级别下,系统有不同的状态,各个级别的意义描述如下. 0:关键级别 1:单用户运行级别,运行rc.sysinit和 ...

  8. uname命令 linux,Linux系统下使用uname命令显示系统和硬件信息

    用法:uname [选项]... 输出一组系统信息.如果不跟随选项,则视为只附加-s 选项. -a, --all                     以如下次序输出所有信息.其中若-p 和 -i ...

  9. linux系统正常停机的命令,Linux系统重启命令大全

    在进行Linux系统操作的时候,如果出现更换硬件.更改系统配置及死机等情况时,就需要对电脑进行重启,而不同的情形重启的方式也不同,即使用的命令不同,接下来是小编为大家收集的Linux系统重启命令大全, ...

  10. Linux系统上没有scp命令,Linux scp命令没反应

    例子: #scp -P 4400 -r root@10.0.24.103:/home2/backup/ /home/mover00/shadow_bak/sites/ 拷贝远程(10.0.24.103 ...

最新文章

  1. SNV分析软件/工具
  2. MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...
  3. python适合什么样的人群_什么样的人比较适合选择Python开发+人工智能技术?
  4. 在Ubuntu上安装Jupyter Notebook
  5. xirihanlin音乐盒 vol.1
  6. java基于jxl.jar包生成Excel文件到指定目录和服务器下载两种模式的使用方法
  7. javascript之字符串常用方法学习 charAt concat indexOf substring substr toUpperCase
  8. SocketServer模块中的几种类
  9. 给你的应用“一只”智慧的眼睛 —— Barcode常识普及以及识别信息处理
  10. 全链路压测实施思路流程分析
  11. 淮安颜老师计算机,颜老师_以老师为话题的作文750字_独木帆作文网
  12. mysql 子链接_MySQL多表查询实例详解【链接查询、子查询等】
  13. 2018中南大学 计算机考研分数,2018中南大学考研分数线多少分?
  14. codeforces 884B Japanese Crosswords Strike Back
  15. 计算机组成原理笔记(8)---机器指令、寻址方式
  16. R语言使用order函数对dataframe数据进行排序、基于多个字段(变量)进行升序排序(ASCENDING)
  17. 第一次做鸭子的感受!
  18. 学籍管理查找学生信息 c语言,【C语言期末实训】学生学籍管理系统
  19. UI控件之开关按钮(ToggleButton与Switch)
  20. 【概率论】3-6:条件分布(Conditional Distributions Part II)

热门文章

  1. 跟我一起学写Makefile-Lesson 8
  2. SQL Server自动备份存储过程和视图的方法
  3. 无法获取有关 Windows NT 组/用户 'WIN-*******\********' 的信息,错误代码 0x534。 [SQLSTATE 42000] (错误 15404))....
  4. 11/27 记事本
  5. 通读cheerio API-网络爬虫
  6. 处理顶点——使用顶点缓冲和索引缓冲将顶点和索引保存在显存中
  7. 漫谈 Clustering (番外篇): Vector Quantization
  8. 波士顿房价预测python决策树_百度飞浆paddlepaddle之波士顿房价预测(二)
  9. 拓端tecdat|R语言ARIMA、GARCH 和 VAR模型估计、预测ts 和 xts格式时间序列
  10. 拓端tecdat|r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现|视频