Tar打包、压缩与解压缩到指定目录的方法

tar在linux上是常用的打包、压缩、加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数

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

举例: 一,将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar
[root@royalwang ~]# tar -cvf /home/www/images.tar /home/www/images ← 仅打包,不压缩
[root@royalwang ~]# tar -zcvf /home/www/images.tar.gz /home/www/images ← 打包后,以gzip压缩

在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz 或tgz来代表gzip压缩过的tar file文件

举例: 二,将 /home/www/images.tar.gz 解压到/home/www下面
[root@royalwang ~]# cd /home/www
[root@royalwang ~]# tar -zxvf /home/images.tar.gz

解压到指定的目录
[root@royalwang ~]# tar -zxvf /home/images.tar.gz -C /specific dir

解包到指定的目录
tar xvf filename.tar -C /specific dir

在IIS上启用Gzip压缩(HTTP压缩)

一.摘要

本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.

 

二.前言.

本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.

 

三.HTTP压缩概述

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。

 

四.HTTP压缩工作原理

Web服务器处理HTTP压缩的工作原理如下:

1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
在用户浏览器发送请求的HTTP头中,  带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.

2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
静态文件和动态文件后缀启动要所都需要在MetaBase.xml中设置.
静态文件需要设置: image

2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略.
在Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展…",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
image

3.使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
找到Location ="/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于设置deflate压缩.
上面两个节点紧挨着.并且设置的属性相同.

如果需要压缩动态文件,则将HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为"TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0.
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property

说明: 这两个属性值一般推荐设置为9, 具有最佳性价比.但是在我的window server 2003上, 压缩率无论如何设置, jQuery和jQuery UI两个文件(58k/188k)压缩后的大小一直相同.(20k/45k). 

下面是我的实例:

<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/deflate"        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"        HcCreateFlags="0"        HcDoDynamicCompression="TRUE"        HcDoOnDemandCompression="TRUE"        HcDoStaticCompression="true"        HcDynamicCompressionLevel="9"        HcFileExtensions="htm                     html                     txt                     js                     css                      swf                     xml"        HcOnDemandCompLevel="9"        HcPriority="1"        HcScriptFileExtensions="asp 
aspx dll exe"
></IIsCompressionScheme><IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" HcCompressionDll="%windir%\system32\inetsrv\gzip.dll" HcCreateFlags="1" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="true" HcDynamicCompressionLevel="9" HcFileExtensions="htm html txt js css swf xml" HcOnDemandCompLevel="9" HcPriority="1" HcScriptFileExtensions="asp
aspx dll exe"
></IIsCompressionScheme>
 

 

4.编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;

 

5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k:
image
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩:
image 
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B:
image 
当同时启动了动态文件压缩时, Gzip压缩评级为A:
image

六.要点总结

1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存.

2.静态压缩和动态压缩率最好设置为9. 

3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的.

4.压缩率设置对js文件不起作用, 压缩后大小总是相同的.

5.图片文件即使启用了gzip压缩大小也没有变化.

 

七. 总结

本文总结了如何在IIS中启用Gzip压缩.  在半年前的项目中我为网站启用了Gzip, 今天整理此文主要为了整理自己的知识以便以后忘记时复习. 另外经查看ChinaCache公司提供的CDN也都启用了Gzip压缩.

启用IIS6的GZIP功能,提高网站打开速度,减少带宽占用

        IIS6默认情况下没有开启GZIP功能,需要我们手动配置,但他又没提供图形化配置功能,所以呀,像我这样的技术人才,都没考虑过使用他,昨天突然看到这个想到,也许对我有用,但从网上找了找,都是一堆手工操作方法,非常麻烦呀,不过以前研究过IIS的配置文件:C:\WINDOWS\system32\inetsrv\MetaBase.xml,所以呀,我知道只要是IIS的功能就可以通过修改这个文件来完成,所以呢,就对这个文件下手吧,根据网上提供的修改的地方,在网上搜索了一圈,找到一个类似ClickOnce 的东西,呵呵,我找的就是这个,所有操作都一键到位,只要执行一段VBS或CMD就配置好了,呵呵。

        使用Gzip压缩会增大服务器CPU的使用率但可以通过压缩而减少服务器向客户端发送的数据,若使用了Gzip压缩IIS在向客户端发送数据时会自动检测,如果客户端浏览器支持IE6.0,firefox Gzip,则使用Gzip压缩后再传送数据,如果不支持,则使用常规方式发送。

        所以,总结下他的优缺点,优:压缩传输,速度一般提高2倍。缺:CPU占用会有所提高,不过通过我的一点分析,GZIP只是在访问一个页时才会进行压缩,下次如果网页没有变动是不会压缩的,除非是使用压缩动态文件,这得实时的去压缩。

REM Setup IIsCompressionScheme for deflatecscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcCompressionDll "%windir%\system32\inetsrv\gzip.dll"cscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcCreateFlags 0cscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcDoDynamicCompression TRUEcscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcDoOnDemandCompression TRUEcscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcDoStaticCompression TRUEcscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcDynamicCompressionLevel 9cscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "js" "xml" "css"cscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcOnDemandCompLevel 9cscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcPriority 1cscript adsutil.vbs set W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "dll" "exe" "aspx" "asmx"REM Setup IIsCompressionScheme for GZipcscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcCompressionDll "%windir%\system32\inetsrv\gzip.dll"cscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcCreateFlags 1cscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcDoDynamicCompression TRUEcscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcDoOnDemandCompression TRUEcscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcDoStaticCompression TRUEcscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcDynamicCompressionLevel 9cscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "js" "xml" "css"cscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcOnDemandCompLevel 9cscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcPriority 1cscript adsutil.vbs set W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "dll" "exe" "aspx" "asmx"REM Setup IIsCompressionSchemes parameterscscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcCacheControlHeader max-age=86400cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcCompressionBufferSize 102400cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcCompressionDirectory "%windir%\IIS Temporary Compressed Files"cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcDoDiskSpaceLimiting FALSEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcDoDynamicCompression TRUEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcDoOnDemandCompression TRUEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcDoStaticCompression TRUEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcExpiresHeader "Wed, 01 Jan 1997 12:00:00 GMT"cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcFilesDeletedPerDiskFree 256cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcIoBufferSize 102400cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcMaxDiskSpaceUsage 0cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcMaxQueueLength 1000cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcMinFileSizeForComp 1cscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForHttp10 FALSEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForProxies FALSEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcNoCompressionForRange FALSEcscript adsutil.vbs set W3SVC/Filters/Compression/Parameters/HcSendCacheHeaders FALSEiisreset

以上是方法adsutil.vbs不一定人人都能找到,所以提供完整下载地址:

IIS6-SET-GZIP.rar

引用本页地址:http://www.yongfa365.com/item/IIS6-Enable-Web-GZIP.html

 

IIS启用GZip压缩后带来的问题及解决办法

    页面文件比较大时,开启GZip压缩可以减少传输的流量,测试了一下效果非常明显,看了园子里面有些人使用了IIS的GZip压缩功能,项目中也应用了该功能,使用的过程中遇到一个比较棘手的问题,找了挺久的一直搞不定。

     项目中在服务器端生成了Excel2007报表文件,文件在下载到本地后不能正常打开了,提示文件格式有问题,由于Excel2007文件格式的本质是一压缩包,怀疑文件在下载的过程中被改动了,但是具体不知道在哪个环节上出了问题。
这里是我发的一个博问,知道的帮下忙啊。
 
     猜想:
     1.因为Excel2007文件是在页面Render的时候输出的,并且输出完后直接End请求,可以推断IIS的压缩机制,应该是在请求开始的时候就已经加入,而不是在请求结束的时候进行压缩的。
     2.文件下载时直接弹出下载框进行下载,可能没有经过浏览器的解压过程。这一点有待考证。抑或有其他原因导致了不能对压缩包进行加压,因为这个压缩包是经过两次打包过的(Excel2007文件生成的时候打包过一次,在通过IIS下载时又被打包了一次)。
 
     使用IIS压缩的问题(目前发现的):
     1.配置不方便,要更改系统里面的那个配置文件,权限不够的话没办法配置。
     2.IIS6下会影响到IIS内的所有站点,据说IIS7不存在这个问题。
     3.配置了IIS压缩的机器,在重启几次后配置丢失了(怪事)。
     4.Excel2007下载的问题,估计OOXML格式的问题都会有问题。
 
     解决:
     解决的办法就是使用HttpModule进行压缩,在HttpModule中使用PostReleaseRequestState事件进行压缩,将压缩的时机延后到Render之后,通常的代码都不会卸载Render之后了吧 :)
     既然PostReleaseRequestState事件是在Render之后,有人会有疑问了,那也可以在页面里面订阅啊,在我实际的测试中发现是不能在页面逻辑中改变Response.Filter,会报错的,这个可能涉及到asp.net中的一些权限吧,所以还是老老实实的在HttpModule中去实现吧。

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.IO;
using System.IO.Compression;

namespace CapabilityTest
{
    
public class CompressModule : IHttpModule
    {
        
#region IHttpModule Members

        public void Dispose()
        {
            
//throw new NotImplementedException();
        }

        public void Init(HttpApplication context)
        {
            context.PostReleaseRequestState 
+= new EventHandler(context_PostReleaseRequestState);
        }

        #endregion

        private const string GZIP = "gzip";
        
private const string DEFLATE = "deflate";

        private void context_PostReleaseRequestState(object sender, Ev
entArgs e)
        {
            HttpApplication app 
= sender as HttpApplication;
            Stream filter 
= app.Response.Filter;

            if (IsEncodingAccepted(app.Request, GZIP))
            {
                app.Response.Filter 
= new GZipStream(filter, CompressionMode.Compress);
                app.Response.AppendHeader(
"Content-Encoding", GZIP);
            }
            
else if (IsEncodingAccepted(app.Request, DEFLATE))
            {
                app.Response.Filter 
= new DeflateStream(filter, CompressionMode.Compress);
                app.Response.AppendHeader(
"Content-Encoding", DEFLATE);
            }
        }

        private static bool IsEncodingAccepted(HttpRequest request, string encoding)
        {
            
string acceptEncoding = request.Headers["Accept-Encoding"];
            
if (acceptEncoding == null)
                
return false;

            acceptEncoding = acceptEncoding.ToLower();
            
if (encoding == GZIP)
                
return acceptEncoding.Contains(GZIP) || acceptEncoding.Contains("x-gzip"|| acceptEncoding.Contains("*");

            if (encoding == DEFLATE)
                
return acceptEncoding.Contains(DEFLATE);

            return false;
        }
    }
}

 
     改进:
     1.可以在config文件中加入自定义的ConfigurationSection,使用配置的方式实现对指定的文件扩展名进行压缩,或排除对指定的文件扩展名的压缩。
     2.网络上看到有人说要针对微软的AJAX做处理,不能进行压缩,判断的方法:
          return (app.Request["HTTP_X_MICROSOFTAJAX"] != null
                  || app.Request["Anthem_CallBack"] != null);
     3.可针对实现了某个基类或接口的页面进行压缩或不压缩:
           ICompressable p = app.Context.Handler as ICompressable;
           return (p == null);
 
     此外:
     本文针对IIS6,最新的IIS7没有亲身体验过,不知道关于压缩方面做得好不好。文中提到的PostReleaseRequestState事件只有在asp.net 2.x才开始支持,故不能用于vs2003开发的项目哦。
 

 

启用IIS Gzip 页面压缩技术 加速网页的浏览速度

启用IIS Gzip 页面压缩技术 加速网页的浏览速度

启用Gzip压缩是在Web服务器和浏览器间传输压缩文本内容的方法。
Gzip压缩采用通用的压缩算法压缩HTML、JavaScript、CSS等静态文件和asp、aspx、php、jsp等动态文件。
压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。
当然,同时也会增加一点点服务器的负担。
通过Windows2003系统设置的方式启用Gzip的突出优点就是效率较高,所以我们直接设置IIS让其支持Gzip压缩。

启用Gzip 压缩步骤

单击“开始”—“管理工具”—“Internet 信息服务(IIS)管理器”,打开IIS管理器;

在IIS管理器中双击本地计算机,右侧显示计算机中IIS列表,在“网站”上右键选择属性;

打开网站属性界面;

单击“服务”标签,选中“压缩应用程序文件”和“压缩静态文件”,同时根据情况设置临时目录的最大容量,初期可以限制为1G左右;

返回Internet信息服务(IIS)管理器,右击“Web服务扩展”,弹出Web服务扩展菜单;
选择“增加一个新的Web服务扩展(A)”;

在“新建Web服务扩展”框中输入扩展名“HTTPComPRession”,添加“要求的文件”为C:\WINDOWS\system32\inetsrv\gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”;

使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),在该文件中搜索HcScriptFileExtensions,设置进行压缩的文件后缀名,系统默认的是asp、dll和exe,根据格式增加aspx、php、jsp等,再搜索HcFileExtensions,增加shtm、shtml、js、css、swf、mid、xml、mp3等静态文件格式;

在运行中输入“net stop iisadmin /y”停止IIS服务,运行完成后保存Metabase.xml;

在运行中输入“iisreset”重启IIS服务;

设置完成后,可以打开最知名的验证网站来验证,网址是http://www.pipeboost.com,
找到验证窗口Real-Time Acceleration Report,输入网址,单击“Analyze Url”按钮进行验证;

执行验证完成,如果Document Status的状态为ComPRessed,就说明压缩成功了。
 

启用IIS6的Gzip压缩功能 加快网页打开速度

网页Gzip压缩的优势是很明显的,第一减小了服务器的带宽,第二提高用户打开网页速度。
现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。对于纯文本来讲,压缩率是相当可观的。如果每个用户节约50%的带宽,那么你租用来的那点带宽就可以服务多一倍的客户了。
  IIS6已经内建了Gzip压缩的支持,可惜,没有设置更好的管理界面。所以要打开这个选项,还要费些功夫。
  首先,如果你需要压缩静态文件(HTML),需要在硬盘上建一个目录,并给它“IUSR_机器名”这个用户的写权限。如果压缩动态文件(PHP,asp,aspx)就不需要了,因为它的页面是每次都动态生成的,压缩完就放弃。然后在IIS管理器中,“网站”上面右键-属性,不是下面的某个站点,而是整个网站。进入“服务”标签,选上启用动态内容压缩,静态内容压缩。

  然后选中网站下面那个服务器扩展,新建一个服务器扩展。名字无所谓,下面的添加文件的路径是:
  c:\windows\system32\inetsrv\gzip.dll,然后启用这个扩展。

  还没完呢,我们还需要修改一个配置文件,修改之前请先停止 IIS 服务,打开 C:\Windows\System32\inetsrv\MetaBase.xml,这个文件很大,找到下面一段信息:

<IIsCompressionScheme	Location ="/LM/W3SVC/Filters/Compression/gzip"		HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"		HcCreateFlags="1"		HcDoDynamicCompression="TRUE"		HcDoOnDemandCompression="TRUE"		HcDoStaticCompression="TRUE"		HcDynamicCompressionLevel="0"		HcFileExtensions="htm			html			txt"		HcOnDemandCompLevel="10"		HcPriority="1"		HcScriptFileExtensions="asp			dll			exe"	></IIsCompressionScheme>

  增加一些要进行压缩的文件后缀,其中 HcFileExtensions 是静态文件的扩展名,增加 js 和 css 等;HcScriptFileExtensions 为动态文件的扩展名,增加 aspx,HcDynamicCompressionLevel改成9,(0-10,9是性价比最高的一个)。
  然后需要重启一下IIS服务,就可以体会到压缩后的速度了。不过通常可能不会有太明显的感觉,可以用http://www.port80software.com/tools/compresscheck.asp这个页面来检查你的网页是否压缩过了,以及压缩比和加快的速度。整个过程对CPU的占用基本上感觉不出来。

25万倍压缩的动画,200K演绎超过15G的内容

Warez出品的精品动画 近25万倍的压缩的精品

每年,世界各地著名的Warez组织都会推出一个小的动画片来比较,仅仅是用来炫耀其实力。64K的3D动画。要知道,一首普通的MP3,通常就有 4000K左右,一张普通的JPG压缩图片也要30-40K,而这个仅有63K的3D动画,你花半个小时也看不完而且不重复带音乐.

prophecy《彗星撞地球》2000年时的最经典力作!相信大多网友对这个演示是相当熟悉了。将1.9G的数据压缩为64K,其3D渲染和声效却令人震撼,尤其是已64K的大小竟然演示了近30分钟的不重复3D影片,其技术令人震惊~因为,事实上,这个动画的真正容量超过15G,也就是说这个 Warez组织把它压缩了25万倍。注:系统必须安装有directx8.0才行。因为动画支持DX8.0加速。

彗星撞地球

表面看起来这是一只小鸭的图片,然而把文件后缀名改成RAR,然后解压缩,很神奇的事情就发生了!

推荐配置:2G/512M/GF4Ti或ATi9600、128M以上
按A键可缩小,按S键放大,按F键快速放,按R键重放……

++++++++++补充说明的分割线++++++++++++

1、右键点鸭子图片,选择“图片另存为”。
2、文件后缀名可能无法直接修改,请:
(1)右键点屏幕左下角“开始”
(2)进入“资源管理器”
(3)选择“工具”—“文件夹”选项—“查看”
取消“隐藏已知文件类型的扩展名”前的勾
(4)点“确定”
3、右键点鸭子图片,选择“重命名”,把文件名最后的“Jpg”改为“RAR”,注意,不要加引号。
4、解压缩,出现文件夹。双击其中的“彗星撞地球.exe”。