tar打包排除某个或多个子目录 | AWK命令

简介: 2010年4月25日a18ccms下午遇到一个小问题:文件目录结构如下/dir0--/dir1


2010年4月25日 a18ccms

下午遇到一个小问题:文件目录结构如下

/dir0-
-/dir1         <—该文件很大,欲排除
-/dir2         <—该文件很大,欲排除
-/dir3         <—目标目录之一
-index.php  <—目标文件之一
………….以下省略N个子目录和子文件………….

目录下很多子目录,而我需要打包。目标是   /wwwroot 下所有子文件+/dir3 ,于是那些多余的子目录就让我头疼,
怎样在不影响文件结构的情况下打包呢,搜索网上,很多人用下面这个方法:

1
tar cvzf \home\all. tar .gz dir0  --exclude dir1 --exclude dir2

但是并不好,要是排除的部分是多出,要是子目录过多,语句该要写多久啊,后来又发现网上说可以直接使用排除参数X

新建文件excludefiles在当前目录中,内容为

1
2
3
4
cat excludefiles
dir1
dir2
tar -cvzf \home\all. tar .gz -X excludefile dir1

注意:
tar命令里面的目标文件是绝对路径格式,excludefile里面就也必须是绝对路径;
tar命令里面的目标文件是相对路径格式,excludefile里面就也必须是相对路径;

后来 搜索找到了自力博客的一样问题的文章 说可以用 AWK 于是去搜索了一下它:Awk学习笔记 发现它提供的语句可以精简,可以这样写:

1
ls -l | awk '\^-\ {print  $8}' | xargs tar cvfz \home\dir0. tar .gz

这个语句很好理解:

ls -l 列出所有文件和目录
awk ‘\^-\ {print $8}’
 正则只保留文件行,获得第八列的所有文件名;
xargs tar 把上一步得到的名称传参给tar命令。
一切OK,轻松完成打包喽!

目录
相关文章
|
8月前
|
Linux
`grep`命令搜索当前目录及其子目录下的所有文件
`grep`命令搜索当前目录及其子目录下的所有文件
3238 1
|
网络安全
tar排除文件和目录的用法
tar czvf /tmp/bak.tar.gz \ --exclude 'download/*' \ --exclude .ssh \ --exclude .bashrc \ . 使用--exclude可以排除文件和目录。
4091 0
|
存储 Linux 网络安全
系统目录结构/ls命令/文件类型/alias命令
2.1/2.2 系统目录结构 2.3 ls命令 2.4 文件类型 2.5 alias命令 linux文件目录结构 linux文件结构 / 系统跟目录 root  root用户主目录,存放启动linux系统的核心文件,如操作系统的内核、引导程序grub等 home 普通用户主目录 bin 存放系统启动时需要执行的二进制文件,普通用户使用的命令。
1378 0
tar命令打包时排除指定目录、指定文件
排除指定目录:--exclude=base_dir/sub_dir 注意:目录后面不要加斜杠 "/" 排除指定文件:--exclude *.jpg 示例如下: tar zcvf data.
2720 0