tar打包,去掉目录前缀
一、tar的常规用法:
1.1 命令格式: tar -cf 目标文件 源文件
目标文件可以带有全路径的文件名(/tmp/test.tar)
源文件可以是一个目录,也可以是一个文件(/home/apple/test, /home/apple/backup.sh
tar -cf /tmp/test.tar /home/apple/test
1.2 目录前缀问题:
tar对源文件是按照输入的目录结构递归打包的,如何去掉目录前缀呢?使用-C选项:
tar -cf 目标文件 -C 源文件所在目录 源文件
tar -cf /tmp/test-no-prefix.tar -C /home/apple test
二、tar的其他选项参数:
(1) 压缩选项:
tar命令只能将文件加打包,方便文件夹传输,压缩使用-z选项(必须放在第一个,将文件一bzip的形式压缩)
tar -zcf /tmp/test-no-prefix.tar.gz /home/apple/test
# -v 选项用于输出文件递归详细信息,可以在熟练使用后忽略改选项
(2) 排除选项:
–exclude 打包排除一些文件或文件夹,每排除一个就需要一个exclude关键字,一般用于文件上传时去掉.git/.svn信息。
tar -zcf /tmp/test-no-prefix.tar.gz /home/apple/test --exclude '.git' --exclude '.svn'
三、tar功能提升:
(1) 编写成函数:/home/apple/utils.sh
#!/bin/bash
# 格式: tar options src_dir dest_dir other_options
itar(){
options=$1
dest_dir=$2
src_dir=$3
shift 3
base_dir=`dirname $src_dir`
file_end=`basename $src_dir`
tar $options $dest_dir -C $base_dir $file_end "$@"
}
(2) 引入函数到当前shell会话(打开一个终端直至关闭)、
source shell脚本 . shell脚本
# 这两种方式都可以生效shell脚本,在当前终端生效
# 通常这个shell脚本定义了一些常量或者实用函数,可以引入到当前会话环境(可以是已经打开的终端, 也可以是一个shell脚本文件)。
$ source /home/apple/utils.sh
$ itar -cf /tmp/test-itar.tar /home/apple/test
关于source的使用,见文件shell文件的调用-提取码: a97p