精华内容
下载资源
问答
  • 本文简单介绍了WinRAR如何把一个文件压缩成几个固定大小的文件以及如何解压这几个文件。 1、压缩 1 > 鼠标选中待压缩文件-右键-添加到压缩文件。 2 > 在弹出的“压缩文件和参数”窗口-切分压缩分卷...

    简述:

    本文简单介绍了WinRAR如何把一个文件压缩成几个固定大小的文件以及如何解压这几个文件。


    1、压缩


    1 > 鼠标选中待压缩文件-右键-添加到压缩文件




    2 > 在弹出的“压缩文件和参数”窗口-切分压缩分卷(V),大小-下拉菜单中,选择合适的大小或自行填入分卷大小。




    3 > 点击确定按钮,就开始按设定大小压缩成几个固定大小的文件,最后一个不一定是固定大小





    2、解压缩


    1 > WinRAR解压缩


    把压缩文件的part1,part2,,,放到同一个文件夹,然后解压缩任意一文件即可。


    2 > 7-Zip解压缩


    同上解压缩即可。

    如果7-Zip版本太旧了,解压缩方法如下。

    把压缩文件的part1,part2,,,放到同一个文件夹,双击一个分卷压缩包,打开文件管理界面,将路径后退一步,全部选定这些分卷后点击“提取”解压。


    3、WinRAR离购买许可只剩多少天的解决方案


    系统:Windows 7 64bit

    WinRAR:5.50 非商业个人版


    问题:

    WinRAR使用过程中出现:WinRAR提示离购买许可只剩多少天

    解决方案:

    1 > 新建文本文档,将下面代码复制到文本文档里,

    RAR registration data
    State Grid Corporation Of China
    50000 PC usage license
    UID=5827a0bd1c43525d0a5d
    64122122500a5d3d56f784f3a440ac3fb632d34e08bbaa37fc7712
    6acaeb8eb044810272e86042cb7c79b1da0eaf88c79f8a7c6dd77b
    dba335e27a109997ac90fb0e10e4129e79f46c42b4ee1832fa5113
    7443fcc1124840d4dd36f3af84a5c915a760b18c6394f938168227
    fbf29edbc4b34ef85ee53fbfca71814a82afadf073876b4b033451
    b6292a7cc7975b3ff3cc73404abbf7c126787344169eeae4609f62
    c9ffbc159bf2640ad5d9b88f8fa9d9cbf2b7e5b022a21938465244

    2 > 保存,并命名为命名为RarReg.key

    3 > 将RarReg.key文件复制到WinRAR的安装目录下,如C:\Program Files\WinRAR

    注册完成,从此即可享受无限制使用


    展开全文
  • 可以用来压缩打包单文件、多个文件、单个目录、多目录。 Linux打包命令_tar tar命令可以用来压缩打包单文件、多个文件、单个目录、多目录。 常用格式: 单个文件压缩打包 tar czvf my.tar.gz file1 多...

    tar命令

    可以用来压缩打包单文件、多个文件、单个目录、多个目录。

    Linux打包命令_tar

    tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。

    常用格式:

    单个文件压缩打包 tar czvf my.tar.gz file1

    多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 目录在压缩)

    单个目录压缩打包 tar czvf my.tar.gz dir1

    多个目录压缩打包 tar czvf my.tar.gz dir1 dir2

    解包至当前目录:tar xzvf my.tar.gz

    cpio

    含子目录find x* | cpio -o > /y/z.cpio

    不含子目录ls x* | cpio -o > /y/z.cpio

    解包: cpio -i < /y/z.cpio

    [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....

    参数:

    -c :建立一个压缩文件的参数指令(create 的意思);

    -x :解开一个压缩文件的参数指令!

    -t :查看 tarfile 里面的文件!

    特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!

    因为不可能同时压缩与解压缩。

    -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

    -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

    -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

    -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

       例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成

       『 tar -zcvPf tfile sfile』才对喔!

    -p :使用原文件的原来属性(属性不会依据使用者而变)

    -P :可以使用绝对路径来压缩!

    -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!

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

    范例:

    范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

    [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

    [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩

    [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

    # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

    # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~

    # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

    # 上述指令在执行的时候,会显示一个警告讯息:

    # 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

    范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

    [root@linux ~]# tar -ztvf /tmp/etc.tar.gz

    # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

    # 就得要加上 z 这个参数了!这很重要的!

    范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

    [root@linux ~]# cd /usr/local/src

    [root@linux src]# tar -zxvf /tmp/etc.tar.gz

    # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,

    # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,

    # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc

    # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

    范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

    [root@linux ~]# cd /tmp

    [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

    # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

    # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

    范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

    [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

    # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

    范例六:在 /home 当中,比 2005/06/01 新的文件才备份

    [root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

    范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

    [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

    范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

    [root@linux ~]# cd /tmp

    [root@linux tmp]# tar -cvf - /etc | tar -xvf -

    # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

    # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

    # 这分别代表 standard output, standard input 与管线命令啦!

    # 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

    展开全文
  • 哈夫曼实现文件压缩压缩(c语言)

    万次阅读 多人点赞 2019-01-23 17:04:47
    一个文件进行压缩和解压缩的程序,功能如下: ① 可以对纯英文文档实现压缩和解压; ② 较好的界面程序运行的说明。 介绍哈夫曼: 效率最高的判别树即为哈夫曼树 在计算机数据处理中,霍夫曼编码...

    写一个对文件进行压缩和解压缩的程序,功能如下:

    ① 可以对纯英文文档实现压缩和解压;

    ② 较好的界面程序运行的说明。

     

     

    介绍哈夫曼:

     

    效率最高的判别树即为哈夫曼树

    在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

    例如,在英文中,e的出现机率最高,而z的出现概率则最低。当利用霍夫曼编码对一篇英文进行压缩时,e极有可能用一个比特来表示,而z则可能花去25个比特(不是26)。用普通的表示方法时,每个英文字母均占用一个字节,即8个比特。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。

    霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。可以证明霍夫曼树的WPL是最小的。

     

    文件压缩与解压

    姓名:  范天祚 

    1 程序说明

    1.1数据结构

    哈夫曼树

    1.2函数功能说明

    printfPercent界面

    compress()读取文件内容并加以压缩,将压缩内容写入另一个文档

    uncompress()解压缩文件,并将解压后的内容写入新文件

    1.3 程序编写的思路及流程

    压缩:统计字符出现次数、将节点按出现次数排序、构造哈夫曼树、设置字符编码、读文件字符、按设置好的编码替换字符、写入存储文件

    解压:读取文件各参数、转换成二进制码、按码求对应字符、写入存储文件

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    struct head
    {
        int b;						  //字符
        long count;                   //文件中该字符出现的次数
        long parent, lch, rch;        //make a tree
        char bits[256];               //the huffuman code
    };
    
    struct head header[512], tmp;  //节点树
    
    void printfPercent(int per)
    {
    	int i = 0;
    	printf("|");
    	for(i = 0; i < 10; i++)
    	{
    		if(i < per/10)
    			printf(">");
    		else
    			printf("-");
    	}
    	printf("|已完成%d%%\n",per);
    }
    
    //函数:compress()
    //作用:读取文件内容并加以压缩
    //将压缩内容写入另一个文档
    int compress(const char *filename,const char *outputfile)
    {
        char buf[512];
        unsigned char c;
        long i, j, m, n, f;
        long min1, pt1, flength;
        FILE *ifp, *ofp;
    	int per = 10;
        ifp = fopen(filename, "rb");                  //打开原始文件
        if (ifp == NULL)
        {
            printf("打开文件失败:%s\n",filename);
            return 0;                             //如果打开失败,则输出错误信息
        }
        ofp = fopen(outputfile,"wb");                 //打开压缩后存储信息的文件
        if (ofp == NULL)
        {
            printf("打开文件失败:%s\n",outputfile);
            return 0;
        }
        flength = 0;
        while (!feof(ifp))
        {
            fread(&c, 1, 1, ifp);
            header[c].count ++;                       //读文件,统计字符出现次数
            flength ++;                               //记录文件的字符总数
        }
        flength --;
        header[c].count --;
        for (i = 0; i < 512; i ++)                    //HUFFMAN算法中初始节点的设置
        {
            if (header[i].count != 0)
                header[i].b = (unsigned char) i;
            else
                header[i].b = -1;
            header[i].parent = -1;
            header[i].lch = header[i].rch = -1;
        }
    
        for (i = 0; i < 256; i ++)                    //将节点按出现次数排序
        {
            for (j = i + 1; j < 256; j ++)
            {
                if (header[i].count < header[j].count)
                {
                    tmp = header[i];
                    header[i] = header[j];
                    header[j] = tmp;
                }
            }
        }
    
    
        for (i = 0; i < 256; i ++)                    //统计不同字符的数量
    	{
            if (header[i].count == 0)
                break;
    	}
    
        n = i;
        m = 2 * n - 1;
        for (i = n; i < m; i ++)
        {
            min1 = 999999999;
            for (j = 0; j < i; j ++)
            {
                if (header[j].parent != -1) continue;
                if (min1 > header[j].count)
                {
                    pt1 = j;
                    min1 = header[j].count;
                    continue;
                }
            }
            header[i].count = header[pt1].count;
            header[pt1].parent = i;
            header[i].lch = pt1;
            min1 = 999999999;
            for (j = 0; j < i; j ++)
            {
                if (header[j].parent != -1) continue;
                if (min1 > header[j].count)
                {
                    pt1 = j;
                    min1 = header[j].count;
                    continue;
                }
            }
            header[i].count += header[pt1].count;
            header[i].rch = pt1;
            header[pt1].parent = i;
        }
    
        for (i = 0; i < n; i ++)                        //构造HUFFMAN树,设置字符的编码
        {
            f = i;
            header[i].bits[0] = 0;
            while (header[f].parent != -1)
            {
                j = f;
                f = header[f].parent;
                if (header[f].lch == j)
                {
                    j = strlen(header[i].bits);
                    memmove(header[i].bits + 1, header[i].bits, j + 1);
                    header[i].bits[0] = '0';
                }
                else
                {
                    j = strlen(header[i].bits);
                    memmove(header[i].bits + 1, header[i].bits, j + 1);
                    header[i].bits[0] = '1';
                }
            }
        }
    
        //下面的就是读原文件的每一个字符,按照设置好的编码替换文件中的字符
        fseek(ifp, 0, SEEK_SET);                                                //将指针定在文件起始位置
        fseek(ofp, 8, SEEK_SET);                                //以8位二进制数为单位进行读取
        buf[0] = 0;
        f = 0;
        pt1 = 8;
    
    	printf("读取将要压缩的文件:%s\n",filename);
    	printf("当前文件有:%d字符\n",flength);
    	printf("正在压缩\n");
    
        while (!feof(ifp))
        {
            c = fgetc(ifp);
            f ++;
            for (i = 0; i < n; i ++)
            {
                if (c == header[i].b) break;
            }
            strcat(buf, header[i].bits);
            j = strlen(buf);
            c = 0;
            while (j >= 8)                                             //当剩余字符数量不小于8个时
            {
                for (i = 0; i < 8; i ++)                               //按照八位二进制数转化成十进制ASCII码写入文件一次进行压缩
                {
                    if (buf[i] == '1') c = (c << 1) | 1;
                    else c = c << 1;
                }
                fwrite(&c, 1, 1, ofp);
                pt1 ++;
                strcpy(buf, buf + 8);
                j = strlen(buf);
            }
    		if(100 * f/flength > per)
    		{
    			printfPercent(per);
    			per += 10;
    		}
            if (f == flength)
    			break;
        }
    	printfPercent(100);
    
        if (j > 0)                                                      //当剩余字符数量少于8个时
        {
            strcat(buf, "00000000");
            for (i = 0; i < 8; i ++)
            {
                if (buf[i] == '1') c = (c << 1) | 1;
                else c = c << 1;                                        //对不足的位数进行补零
            }
            fwrite(&c, 1, 1, ofp);
            pt1 ++;
        }
        fseek(ofp, 0, SEEK_SET);                                        //将编码信息写入存储文件
    	fwrite(&flength,1,sizeof(flength),ofp);
        fwrite(&pt1, sizeof(long), 1, ofp);
        fseek(ofp, pt1, SEEK_SET);
        fwrite(&n, sizeof(long), 1, ofp);
        for (i = 0; i < n; i ++)
        {
    		tmp = header[i];
    
            fwrite(&(header[i].b), 1, 1, ofp);
    		pt1++;
            c = strlen(header[i].bits);
            fwrite(&c, 1, 1, ofp);
    		pt1++;
            j = strlen(header[i].bits);
    
            if (j % 8 != 0)                                             //当位数不满8时,对该数进行补零操作
            {
                for (f = j % 8; f < 8; f ++)
                    strcat(header[i].bits, "0");
            }
    
            while (header[i].bits[0] != 0)
            {
                c = 0;
                for (j = 0; j < 8; j ++)
                {
                    if (header[i].bits[j] == '1') c = (c << 1) | 1;
                    else c = c << 1;
                }
                strcpy(header[i].bits, header[i].bits + 8);
                fwrite(&c, 1, 1, ofp);                                            //将所得的编码信息写入文件
    			pt1++;
            }
    
    		header[i] = tmp;
        }
        fclose(ifp);
        fclose(ofp);                                                              //关闭文件
    
    	printf("压缩后文件为:%s\n",outputfile);
        printf("压缩后文件有:%d字符\n",pt1 + 4);
    
        return 1;                                       //返回压缩成功信息
    }
    
    
    //函数:uncompress()
    //作用:解压缩文件,并将解压后的内容写入新文件
    int uncompress(const char *filename,const char *outputfile)
    {
        char buf[255], bx[255];
        unsigned char c;
    	char out_filename[512];
        long i, j, m, n, f, p, l;
        long flength;
    	int per = 10;
    	int len = 0;
        FILE *ifp, *ofp;
    	char c_name[512] = {0};
        ifp = fopen(filename, "rb");                                              //打开文件
        if (ifp == NULL)
        {
            return 0;     //若打开失败,则输出错误信息
        }
    
    													  //读取原文件长
    	if(outputfile)
    		strcpy(out_filename,outputfile);
    	else
    		strcpy(out_filename,c_name);
    
        ofp = fopen(out_filename, "wb");                                            //打开文件
        if (ofp == NULL)
        {
            return 0;
        }
    
    	fseek(ifp,0,SEEK_END);
    	len = ftell(ifp);
    	fseek(ifp,0,SEEK_SET);
    
    	printf("将要读取解压的文件:%s\n",filename);
    	printf("当前文件有:%d字符\n",len);
    	printf("正在解压\n");
    
        fread(&flength, sizeof(long), 1, ifp);                                    //读取原文件长
        fread(&f, sizeof(long), 1, ifp);
        fseek(ifp, f, SEEK_SET);
        fread(&n, sizeof(long), 1, ifp);                                          //读取原文件各参数
        for (i = 0; i < n; i ++)                                                  //读取压缩文件内容并转换成二进制码
        {
            fread(&header[i].b, 1, 1, ifp);
            fread(&c, 1, 1, ifp);
            p = (long) c;
            header[i].count = p;
            header[i].bits[0] = 0;
            if (p % 8 > 0) m = p / 8 + 1;
            else m = p / 8;
            for (j = 0; j < m; j ++)
            {
                fread(&c, 1 , 1 , ifp);
                f = c;
                _itoa(f, buf, 2);
                f = strlen(buf);
                for (l = 8; l > f; l --)
                {
                    strcat(header[i].bits, "0");                                  //位数不足,执行补零操作
                }
                strcat(header[i].bits, buf);
            }
            header[i].bits[p] = 0;
        }
    
        for (i = 0; i < n; i ++)
        {
            for (j = i + 1; j < n; j ++)
            {
                if (strlen(header[i].bits) > strlen(header[j].bits))
                {
                    tmp = header[i];
                    header[i] = header[j];
                    header[j] = tmp;
                }
            }
        }
    
        p = strlen(header[n-1].bits);
        fseek(ifp, 8, SEEK_SET);
        m = 0;
        bx[0] = 0;
    
    
        while (1)
        {
            while (strlen(bx) < (unsigned int)p)
            {
                fread(&c, 1, 1, ifp);
                f = c;
                _itoa(f, buf, 2);
                f = strlen(buf);
                for (l = 8; l > f; l --)
                {
                    strcat(bx, "0");
                }
                strcat(bx, buf);
            }
            for (i = 0; i < n; i ++)
            {
                if (memcmp(header[i].bits, bx, header[i].count) == 0) break;
            }
            strcpy(bx, bx + header[i].count);
            c = header[i].b;
            fwrite(&c, 1, 1, ofp);
            m ++;
    
    		if(100 *  m/flength > per)
    		{
    			printfPercent(per);
    			per += 10;
    		}
            if (m == flength) break;
        }
    	printfPercent(100);
    
        fclose(ifp);
        fclose(ofp);
    
    	printf("解压后文件为:%s\n",out_filename);
        printf("解压后文件有:%d字符\n",flength);
    
        return 1;                   //输出成功信息
    }
    
    int main(int argc,const char *argv[])
    {
    	memset(&header,0,sizeof(header));
        memset(&tmp,0,sizeof(tmp));
    
    	compress("测试文档.txt","测试文档.txt.zip");
    	uncompress("测试文档.txt.zip","测试文档.txt 解压后.txt");
    	system("pause");
    
    	return 0;
    }
    

     

    2 功能展示

    2.1 控制台显示

    2.2 文件效果

    开始时只有一个文件《测试文档.txt》:

    打开《测试文档.txt》

    《测试文档.txt》文件大小:

    程序运行结束后多了两个文件:

    以文本形式打开压缩二进制文件《测试文档.txt.zip》:

    《测试文档.txt.zip》文件属性:

    展开全文
  • tar命令可以用来压缩打包单文件、多个文件、单个目录、多目录。Linux打包命令_tartar命令可以用来压缩打包单文件、多个文件、单个目录、多目录。常用格式:单个文件压缩打包 tar czvf my.tar.gz file1多个文件...

    tar命令

    可以用来压缩打包单文件、多个文件、单个目录、多个目录。

    Linux打包命令_tar

    tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。

    常用格式:

    单个文件压缩打包 tar czvf my.tar.gz file1

    多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 目录在压缩)

    单个目录压缩打包 tar czvf my.tar.gz dir1

    多个目录压缩打包 tar czvf my.tar.gz dir1 dir2

    解包至当前目录:tar xzvf my.tar.gz

    cpio

    含子目录find x* | cpio -o > /y/z.cpio

    不含子目录ls x* | cpio -o > /y/z.cpio

    解包: cpio -i < /y/z.cpio

    [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....

    参数:

    -c :建立一个压缩文件的参数指令(create 的意思);

    -x :解开一个压缩文件的参数指令!

    -t :查看 tarfile 里面的文件!

    特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!

    因为不可能同时压缩与解压缩。

    -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

    -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

    -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

    -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

       例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成

       『 tar -zcvPf tfile sfile』才对喔!

    -p :使用原文件的原来属性(属性不会依据使用者而变)

    -P :可以使用绝对路径来压缩!

    -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!

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

    范例:

    范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

    [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

    [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩

    [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

    # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

    # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~

    # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

    # 上述指令在执行的时候,会显示一个警告讯息:

    # 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

    范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

    [root@linux ~]# tar -ztvf /tmp/etc.tar.gz

    # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

    # 就得要加上 z 这个参数了!这很重要的!

    范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

    [root@linux ~]# cd /usr/local/src

    [root@linux src]# tar -zxvf /tmp/etc.tar.gz

    # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,

    # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,

    # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc

    # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

    范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

    [root@linux ~]# cd /tmp

    [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

    # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

    # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

    范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

    [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

    # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

    范例六:在 /home 当中,比 2005/06/01 新的文件才备份

    [root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

    范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

    [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

    范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

    [root@linux ~]# cd /tmp

    [root@linux tmp]# tar -cvf - /etc | tar -xvf -

    # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

    # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

    # 这分别代表 standard output, standard input 与管线命令啦!

    # 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!



    #################################

    转自:http://blog.csdn.net/liangzhao_jay/article/details/48052913

    展开全文
  • 本来想的是两个文件压缩一个压缩包,但是给的类库有点大,最终选择写成一个二进制文件,接着上传这个二进制。这需要我们可以实现,把两个文件写成二进制,然后再分开还原。 Key:文件在计算机里面存储的方式...
  • 1、如何将指定文件中的几行内容写入到另一个文件 sed -n ‘1,10’p file1.txt >> file2.txt 将file1中文件的前十行写入到file2中
  • web性能优化--用gzip压缩资源文件

    万次阅读 多人点赞 2019-07-31 19:14:09
    、gzip压缩技术 gzip(GNU- ZIP)是压缩技术。...浏览器那里不需要我们担心,因为目前的大多数浏览器都支持解析gzip压缩过的资源文件。在实际的应用中我们发现压缩的比率往往在3到10倍,也...
  • C++四个文件实现压缩压缩zip文件

    万次阅读 2018-07-09 19:43:24
    我从网上找到了一个很简单的zip,unzip接口,只有四个文件,直接放到工程中就可以用了。下面是两个例子,源码也在最下面的文档中。string2tchar的方法在之前的文章中有。void UtilGui::OnBtZipFileClicked() { ...
  • 在用百度网盘备份资料时由于文件过大而无法上传...2、在弹出的窗口中,此处需要在“常规”中进行一些参数,其他按钮可以设置其他的参数,但是我们压缩文件只需要在常规中设置就可以了,在“压缩文件格式”选项中选择第
  • Java解压缩zip - 解压缩个文件或文件夹

    万次阅读 多人点赞 2012-09-19 12:56:50
    Java解压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹...可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls")); 测试文件目录结构:
  • 压缩文件压缩文件大家肯定都不陌生,别跟我说你没用见过压缩文件。在我们windows当中压缩文件可以说非常常见的种文件格式,我们在下载软件、资料、安装包一般来说都是压缩文件的格式。那在我们linux系统当中有哪...
  • 我电脑中有一个虚拟机软件Virtual PC,文件名...那么我可以使用WINRAR软件这个31.7MB的文件分割成两个小于20MB的文件,再上传上来。下面是操作步骤:1.右键点击文件,选择“添加到压缩文件”。2.在出现的“压缩文件名
  • C语言将一个简单的文件压缩

    千次阅读 2016-11-30 10:59:27
    #include #include <stdlib.h> /* 为了调用exit() */ #include <string.h> /*使用strcpy()和strcat()*/ #define LEN 40 ...使用stderr指针错误信息发送到标准错误文件,这是一个标准的C惯例。
  • 使用Java实现多个文件压缩打包

    千次阅读 2017-10-17 22:46:45
    引言  在做项目的时候经常会涉及到文件压缩,比如近期用Java Web做一个后台管理,后台有个导出功能,需要统计生成几十个excel文件,然后进行下载,如果不将这些文件进行压缩传送,耗费用户流量不说,用户浏览器...
  • 文件压缩压缩

    千次阅读 2018-09-10 19:12:15
    脑子一热,想到能不能再次压缩文件?没有百度到,想要的答案,自己费事来try try。 看不懂的知识:https://blog.csdn.net/xuchuangqi/article/details/52939705 gzip 对于要压缩的文件,首先使用LZ77算法的一个...
  • iOS用ZipArchive文件解压缩、压缩文件
  • 如何把两个二进制文件合并

    千次阅读 2018-12-02 09:53:55
    2.新建一个txt文件 输入如下格式内容 并存为bat文件:   copy 图片名.gif/b+压缩文件名.rar/b 新图片名.gif     3.双击bat文件 生成的图片即可 你们也可以聪明点不一定非要gif格式的图片和RAR格式的压缩包 ...
  • Java多文件压缩下载解决方案

    万次阅读 2018-09-07 18:00:33
    会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下载的文件全部压缩成一个ZIP压缩文件,然后通过...
  • java web 实现多个文件压缩下载

    千次阅读 2017-07-31 10:58:25
    实现思路有种:一是将所有文件先打包压缩为一个文件,然后下载这个压缩包,二是一边压缩一边下载,将多个文件逐一写入到压缩文件中。我这里实现了边压缩边下载。 下载样式: 点击下载按钮,会弹出下载框: ...
  • 步:文件压缩和解压缩方法 //解压gzip文件 public static boolean extractZip(File file, File parent) { ZipFile zf = null; try { zf = new ZipFile(file); Enumeration entries = zf.entries();...
  • ZipOutputStream压缩文件

    万次阅读 2012-08-20 18:22:37
    /**创建一个压缩文件,from为文件夹路径,to为创建好后压缩文件路径*/ public void CreateZip(String from,String to) throws IOException { Listlist=getFiles(from); ZipOutputStream out=new ZipOutputStream(new...
  • 2、以下是解压缩文件 unzip file.zip 3、以下是往压缩文件里面删除文件 zip -d file.zip file.txt 4、以下是往压缩文件里面添加文件 zip -m file.zip file.txt 5、以下是详细参数表 参数 描述 -x ...
  • 压缩文件后缀解析

    千次阅读 2018-03-30 16:53:14
    压缩文件后缀解析 将此文章定位安全标签,原因认为了解压缩文件解压缩使用规范,能够更加安全的编码 [StackEdit][6]: 基本知识 首先明确打包和压缩是码事,tar是进行打包,但是tar.gz是打包后压缩。 ...
  • 使用Java以zip形式批量下载文件、压缩文件

    万次阅读 多人点赞 2020-07-19 21:22:25
    这篇博客详细介绍了在Java中以zip形式批量下载文件,博客中有完整的代码实现。
  • Ubuntu压缩文件解压文件

    千次阅读 2012-10-11 18:02:37
    实践: 介绍: ...在我们探究这些用法 之前,我想先跟大家分享一下使用不同压缩格式的经验。...因为它实际上已成为压缩文件的标准 选择,而且它在windows上也能使用。我经常用zip格式压缩那些需要共享给w
  • * @param zipFilePath 需要压缩到哪个zip文件(无需创建这样一个zip,只需要指定一个全路径) * @param keepDirStructure 压缩后目录是否保持原目录结构 * @throws IOException * @return int 压缩成功的文件个...
  • 压缩与解压缩6—WinRAR 的基本使用 一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,它结合了可执行文件模块,一种用以运行从压缩文件解压文件的模块。这样的压缩文件不需要外部程序来解压自解压文件的...
  • Linux 基础命令入门 文件压缩

    千次阅读 2020-05-06 13:07:34
    一般 tar-zcvf压缩文件分两个步骤; 第一步骤,要压缩的文件整成一个包 testtar.txt.tar 第二步骤,打成包的文件压缩,testtar.txt.tar.gz 创建一个目录”test”;mkdir test 创建一个文件”testtar.txt”; ...
  •   程序员在做web等项目的时候,往往都需要添加文件上传、下载、删除的功能,有时是单... 这篇博文主要是讲如何将多个文件压缩并下载下来: 主要有以下几步骤:1。 首先先遍历出某个文件夹所含有的所有文件im...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 571,711
精华内容 228,684
关键字:

怎么把一个压缩文件分两个