首页 文章

如何将所有子目录中的所有文件gzip压缩为bash中的一个压缩文件

提问于
浏览
170

可能重复:gzipping一组目录并创建tar压缩文件

This post描述了如何在目录结构中单独gzip每个文件 . 但是,我需要做一些稍微不同的事情 . 我需要为某个目录下的所有文件生成一个大的gzip文件 . 我还需要能够指定压缩文件的输出文件名(例如,files.gz)并覆盖旧的压缩文件文件(如果已存在) .

3 回答

  • 339
    tar -zcvf compressFileName.tar.gz folderToCompress
    

    folderToCompress中的所有内容都将转到compressFileName

    编辑:经过审核和评论后,我意识到人们可能会在没有扩展名的情况下与compressFileName混淆 . 如果需要,可以使用.tar.gz扩展名(如建议的那样)和compressFileName

  • 55

    有许多压缩方法可以递归地运行命令行,并且知道最终用户是谁 .

    即如果它被发送给运行Windows的人,那么zip可能是最好的:

    zip -r file.zip folder_to_zip
    
    unzip filenname.zip
    

    对于其他Linux用户或你的自我焦油是伟大的

    tar -cvzf filename.tar.gz folder
    
    tar -cvjf filename.tar.bz2 folder  # even more compression
    
    #change the -c to -x to above to extract
    

    人们必须小心使用焦油以及如何涂抹/提取物品,例如,如果我跑步

    cd ~
    tar -cvzf passwd.tar.gz /etc/passwd
    tar: Removing leading `/' from member names
    /etc/passwd
    
    
    pwd
    

    /家/名为myUsername

    tar -xvzf passwd.tar.gz
    

    这将创建/ home / myusername / etc / passwd

    不确定所有版本的tar是否都这样做:

    Removing leading `/' from member names
    
  • 16

    @amitchhajer的帖子适用于GNU tar . 如果有人发现此帖并需要它在NON GNU 系统上工作,他们可以这样做:

    tar cvf - folderToCompress | gzip > compressFileName
    

    要扩展存档:

    zcat compressFileName | tar xvf -
    

相关问题