tar去掉目录前缀

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

    原文作者:没有梦想的咸鱼~
    原文地址: https://blog.csdn.net/weixin_39517298/article/details/119006863
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞