免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3014 | 回复: 8
打印 上一主题 下一主题

linux下面tar实现做到solaris下面tar的-I选项功能 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-14 14:49 |只看该作者 |倒序浏览
10可用积分
solaris下面的tar -I 命令选项 可以根据一个包含文件路径的列表的文件将文件进行打包。linux下的tar没有此选项,请问如何可以做到相同的功能。
我平时在solaris下面结合find对每天新增加的文件进行打包备份。现在系统改为linux后,此脚本无法使用,因为linux下的tar没有 -I的命令。
脚本代码如下:



YEAR=`/bin/date '+%Y'`
MON=`/bin/date '+%m'`
DAY=`/bin/date '+%d'`
SRC_HOME=/www'
TARBACK_HOME='/data/www/newbak'
BACK_HOME='/data/www'
CUR_DIR=`dirname $0`
NEWFILELOG=$CUR_DIR/log1
TARLOG=$CUR_DIR/log2
EXACLOG=$CUR_DIR/log3
if test ! -d $SRC_HOME
then
        echo "$SRC_HOME does not exist.\n"
        exit
fi
if test ! -d $TARBACK_HOME
then
        echo "$TARBACK_HOME does not exist.\n"
        exit
fi
cd $SRC_HOME
find . -type f -mtime -1 > $NEWFILELOG/www_$YEAR$MON$DAY.log 2>&1
tar -cvf $TARBACK_HOME/webBak$YEAR$MON$DAY.tar -I $NEWFILELOG/www_$YEAR$MON$DAY.log > $TARLOG/www_webBak_c$YEAR$MON$DAY.log 2>&1

if test ! -d $BACK_HOME
then
        echo "$BACK_HOME does not exist.\n"
else
        cd $BACK_HOME
        tar -xvf $TARBACK_HOME/webBak$YEAR$MON$DAY.tar > $EXACLOG/www_webBak_x$YEAR$MON$DAY.log 2>&1
fi

论坛徽章:
0
2 [报告]
发表于 2008-05-14 16:02 |只看该作者
  1. tar -zcvf backup.tar.gz -I file.list
复制代码


改成這樣看看:

  1. tar -zcvf backup.tar.gz $( cat file.list )
复制代码


--

论坛徽章:
24
15-16赛季CBA联赛之北京
日期:2018-08-17 18:43:33技术图书徽章
日期:2018-08-22 12:53:57技术图书徽章
日期:2018-08-22 12:54:20技术图书徽章
日期:2018-08-22 12:54:3015-16赛季CBA联赛之福建
日期:2018-10-19 16:58:1619周年集字徽章-庆
日期:2019-08-27 13:28:5619周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-19
日期:2019-08-27 13:31:2615-16赛季CBA联赛之同曦
日期:2019-09-05 12:03:2819周年集字徽章-周
日期:2019-09-06 18:54:5415-16赛季CBA联赛之上海
日期:2018-07-25 11:55:2615-16赛季CBA联赛之青岛
日期:2018-07-10 14:13:18
3 [报告]
发表于 2008-05-14 16:15 |只看该作者
建议google一下.

论坛徽章:
0
4 [报告]
发表于 2008-05-14 16:54 |只看该作者

谢谢kenduest

tar -zcvf backup.tar.gz $( cat file.list ) 这个用法倒是没有见过 ,请假下$( cat file.list ) 这里是什么意思?

论坛徽章:
0
5 [报告]
发表于 2008-05-14 16:55 |只看该作者

to :incle (incle)

goole 过了 还是没有找到 比较郁闷

论坛徽章:
0
6 [报告]
发表于 2008-05-14 23:54 |只看该作者
原帖由 teron 于 2008-5-14 16:55 发表
goole 过了 还是没有找到 比较郁闷


  1. Linux: Kendlee@~> echo "My accont name: $(whoami)"
  2. My accont name: kendlee
复制代码


可以去看一下 bash manual, or shell 版找答案。

--

论坛徽章:
0
7 [报告]
发表于 2008-05-15 12:08 |只看该作者

搞定了 谢谢!

YEAR=`/bin/date '+%Y'`
MON=`/bin/date '+%m'`
DAY=`/bin/date '+%d'`
SRC_HOME=/www'
TARBACK_HOME='/data/www/newbak'
BACK_HOME='/data/www'
CUR_DIR=`dirname $0`
NEWFILELOG=$CUR_DIR/log1
TARLOG=$CUR_DIR/log2
EXACLOG=$CUR_DIR/log3
if test ! -d $SRC_HOME
then
        echo "$SRC_HOME does not exist.\n"
        exit
fi
if test ! -d $TARBACK_HOME
then
        echo "$TARBACK_HOME does not exist.\n"
        exit
fi
cd $SRC_HOME
find . -type f -mtime -1 > $NEWFILELOG/www_$YEAR$MON$DAY.log 2>&1
tar -rvf $TARBACK_HOME/webBak$YEAR$MON$DAY.tar  $(cat $NEWFILELOG/newfile$YEAR$MON$DAY.log) > $TARLOG/www_webBak_c$YEAR$MON$DAY.log 2>&1

if test ! -d $BACK_HOME
then
        echo "$BACK_HOME does not exist.\n"
else
        cd $BACK_HOME
        tar -xvf $TARBACK_HOME/webBak$YEAR$MON$DAY.tar > $EXACLOG/www_webBak_x$YEAR$MON$DAY.log 2>&1
fi

论坛徽章:
0
8 [报告]
发表于 2008-05-17 10:10 |只看该作者
楼上的方法,如果文件太多了可能会有问题吧.
一定要用tar吗?cpio也可以啊.建议date不要多次使用,应该只取一次保存下来,以后取保存的值.
多次取date在0点运行是容易出问题.
SRC_HOME=怎么有1个单引号,漏了一个吗?

set `date '+%Y %m %d'`
YEAR="$1"
MON="$2"
DAY="$3"
SRC_HOME=/www
TARBACK_HOME='/data/www/newbak'
BACK_HOME='/data/www'
CUR_DIR=`dirname $0`
NEWFILELOG=$CUR_DIR/log1
TARLOG=$CUR_DIR/log2
EXACLOG=$CUR_DIR/log3
if test ! -d $SRC_HOME
then
        echo "$SRC_HOME does not exist.\n"
        exit
fi
if test ! -d $TARBACK_HOME
then
        echo "$TARBACK_HOME does not exist.\n"
        exit
fi
cd $SRC_HOME
>$TARLOG/www_webBak_c$YEAR$MON$DAY.log
find . -type f -mtime -1 |cpio -ouvdmB $TARBACK_HOME/webBak$YEAR$MON$DAY.cpio 2>>$TARLOG/www_webBak_c$YEAR$MON$DAY.log
#也可以压缩:find . -type f -mtime -1 |cpio -ouvdmB 2>>$TARLOG/www_webBak_c$YEAR$MON$DAY.log|gzip -c >$TARBACK_HOME/webBak$YEAR$MON$DAY.cpio 2>>$TARLOG/www_webBak_c$YEAR$MON$DAY.log
if test ! -d $BACK_HOME
then
        echo "$BACK_HOME does not exist.\n"
else
        cd $BACK_HOME
        cpio -iuvdmB <$TARBACK_HOME/webBak$YEAR$MON$DAY.cpio > $EXACLOG/www_webBak_x$YEAR$MON$DAY.log 2>&1
        #gzip -dc <$TARBACK_HOME/webBak$YEAR$MON$DAY.cpio.gz|cpio -iuvdmB  > $EXACLOG/www_webBak_x$YEAR$MON$DAY.log 2>&1
fi

论坛徽章:
0
9 [报告]
发表于 2008-05-17 11:29 |只看该作者
tar -G
增量备份。何必这么麻烦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP