csensix
V2EX  ›  问与答

CentOS tar gzip 压缩时间太长

  •  
  •   csensix · Dec 26, 2014 · 4630 views
    This topic created in 4161 days ago, the information mentioned may be changed or developed.
    是这样,有一个目录A,里面有一千多个子目录。之前,都是直接tar命令打包压缩A目录。现在,A目录大小超过10G了,前几天发现运行了五六个小时还没打包压缩完。

    后来,我改成用循环对A目录下的子目录进行打包压缩,结果还是得运行五六个小时。虽然程序没报错,但我隐约觉得这中间有问题。

    特来这里请教,还有没有更好的备份方案?
    7 replies    2014-12-26 15:47:29 +08:00
    rrfeng
        1
    rrfeng  
       Dec 26, 2014
    增量备份。
    halfbloodrock
        2
    halfbloodrock  
       Dec 26, 2014
    tar是单线程。。。我当时解决方式用了perl的parallel模块并发压缩。。。

    http://search.cpan.org/~szabgab/Parallel-ForkManager-1.07/lib/Parallel/ForkManager.pm

    其他方式还有很多。
    csensix
        3
    csensix  
    OP
       Dec 26, 2014
    @rrfeng 但是现在文件已经很大了
    csensix
        4
    csensix  
    OP
       Dec 26, 2014
    @halfbloodrock 这个高深了
    cattyhouse
        5
    cattyhouse  
       Dec 26, 2014 via iPhone
    用pigz压缩,多线程。
    halfbloodrock
        6
    halfbloodrock  
       Dec 26, 2014
    @csensix
    ....其实很简单...我这种perl一窍不通的也能照着画出脚本来。。。

    #########

    #!/usr/bin/perl -w
    use strict;
    use Parallel::ForkManager;

    my $MAX_PROCESSES=10;
    my $pm=new Parallel::ForkManager($MAX_PROCESSES);

    my @exp=(
    ["tar -zcf /log/FY13_logs/Nov22/a.tar.gz /log/NON-PCI/app-logs/12/11/22/*"],
    ["tar -zcf /log/FY13_logs/Nov23/a.tar.gz /log/NON-PCI/app-logs/12/11/23/*"],
    ["tar -zcf /log/FY13_logs/Nov24/a.tar.gz /log/NON-PCI/app-logs/12/11/24/*"],
    );

    foreach my $i (@exp){
    $pm->start and next;
    `@$i`;
    $pm->finish;
    }
    #########
    66450146
        7
    66450146  
       Dec 26, 2014
    压缩的时候是 CPU 跑满还是磁盘 IO 跑满?

    如果是磁盘 IO 跑满就提高压缩率,换其他压缩方式

    如果是 CPU 跑满就降低压缩率,或者甚至不压缩

    重复前面两步直到无法提高打包速度,如果还不满意的话就只能换其他方法了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1052 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 22:40 · PVG 06:40 · LAX 15:40 · JFK 18:40
    ♥ Do have faith in what you're doing.