Linux脚本打包目录,shell脚本单独打包子文件夹

用于备份,比如D盘project目录下有很多个独立的项目,如果直接上传到网盘,文件数量可能会超过限制,上传速度也慢,其实也没有必要,在网盘上浏览单个文件也没有意义。

overlimited.jpg

百度网盘限制一次上传5000个文件

但是,如果将整个project目录压缩,压缩包会比较大,想看单个项目时又需要将整个project压缩包下载下来,速度会比较慢。百度网盘的在线解压功能也有些鸡肋,貌似只能解压单个文件。所以最好的办法是将每个项目单独打包。shell脚本代码如下:

#!/bin/bash

dirList=`ls -p $1 |grep / |tr -d /`#查看要压缩的文件夹

for dir in $dirList

do

tar -zcvf $1/$dir.tar.gz $1/$dir/

done

1

2

3

4

5

6

#!/bin/bash

dirList=`ls-p$1|grep/|tr-d/`#查看要压缩的文件夹

fordirin$dirList

do

tar-zcvf$1/$dir.tar.gz$1/$dir/

done

其中-p选项是在文件夹末尾增加“/”,配合grep / 目的是筛选出文件夹。 tr -d是删除文件夹末尾的 “/”。

如果文件夹下面有单个文件也想打包,修改代码:

dirList=`ls $1`

1

dirList=`ls$1`

就可以了。

使用的时候要注意目录参数结尾不要加斜杠 / ,否则连续出现两个斜杠压缩时会有空白名文件夹:

$ bash tarsubfolder.sh /d/test/

tar: Removing leading `/' from member names

/d/test//1/

/d/test//1/1/

tar: Removing leading `/' from member names

/d/test//2/

/d/test//2/2.txt

/d/test//2/3/

tar: Removing leading `/' from member names

/d/test//\320\302\275\250\316\304\261\276\316\304\265\265.txt

1

2

3

4

5

6

7

8

9

10

$bashtarsubfolder.sh/d/test/

tar:Removingleading`/' from member names

/d/test//1/

/d/test//1/1/

tar: Removing leading `/'frommembernames

/d/test//2/

/d/test//2/2.txt

/d/test//2/3/

tar:Removingleading`/'frommembernames

/d/test//\320\302\275\250\316\304\261\276\316\304\265\265.txt

避免出现空白名文件夹也可以将$1/$dir之间的斜杠去掉,然后文件夹参数使用末尾带斜杠的方式。

用find配合exec也可以实现子文件夹单独打包:

find ./ -maxdepth 1 -type d \! -name "." -exec tar -cf {}.tar {} \;

1

find./-maxdepth1-typed\!-name"."-exectar-cf{}.tar{}\;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值