博客首页
注册
建议与交流
排行榜
加入友情链接
宝宝相册的专门空间
推荐
投诉
搜索:
帮助
星瞳——吾爱
初步打算,除了自己喜欢的文章,也尽量贴些原创文章和照片什么的----2005.01.04
管理博客
发表文章
留言
收藏夹
博客圈
音乐
相册
文章
首页
pax的最酷选项
loveunix最近在讨论pax、tar等备份命令的差别。拉风提到pax有将绝对路径转为相对路径的能力。在网上搜了搜,找到两点:
1、pax不仅可以处理pax文件,而且可以处理tar文件
2、pax 最酷的功能是其-s 选项,允许在向存档写文件、从存档提取文件或列举其中的
文件时发出文件名消息。它以ed 或sed 中使用的替换命令作为参数(通常需要包含
在单引号中),表明如何对文件名进行转换。例如,下面的命令在从存档读取文件时,
把每个文件的第二级目录名chavez 更改为harvey,改变它们在磁盘上的目标位置:
$ pax -r -s ',^/home/chavez/,/home/harvey/,' \
-f /dev/rmt0 /home/chavez
早上来公司迫不及待地试了一下,两点都得到验证。过程如下:
08:59:35
root@VIOC:[/test]#ls
-l
total 27072
-rw-r--r-- 1 root system 3805 Dec 19 10:44 .toc
-rw-r----- 1 root system 13854720 Dec 19 10:43 bos.sysmgt
08:59:38
root@VIOC:[/test]#tar
-cvf /test.tar /test
a /test
a /test/bos.sysmgt 27060 blocks.
a /test/.toc 8 blocks.
08:59:53
root@VIOC:[/test]#mkdir
test2
09:00:00
root@VIOC:[/test]#cd
test2
09:00:03
root@VIOC:[/test/test2]#pax
-s:/.*/:./: -rvf /test.tar
USTAR format archive
/test
./bos.sysmgt
./.toc
09:00:10
root@VIOC:[/test/test2]#ls
-l
total 27080
-rw-r--r-- 1 root system 3805 Dec 19 10:44 .toc
-rw-r----- 1 root system 13854720 Dec 19 10:43 bos.sysmgt
09:00:15
root@VIOC:[/test/test2
]#
又想到,如果在tar的时候源目录里包含子目录会怎么样呢?根据需要,灵活地改一下-s:/.*/:./:就可以了。过程如下:
09:02:16
root@VIOC:[/test/test2]#touch
a b c
09:14:08
root@VIOC:[/test/test2]#tar
-cvf /test.tar /test
a /test
a /test/bos.sysmgt 27060 blocks.
a /test/.toc 8 blocks.
a /test/test2
a /test/test2/bos.sysmgt 27060 blocks.
a /test/test2/.toc 8 blocks.
a /test/test2/a 0 blocks.
a /test/test2/b 0 blocks.
a /test/test2/c 0 blocks.
09:14:21
root@VIOC:[/test/test2]#mkdir
test3
09:14:28
root@VIOC:[/test/test2]#cd
test3
09:14:31
root@VIOC:[/test/test2/test3]#pax
-s:/.*/:./: -rvf /test.tar
USTAR format archive
/test
./bos.sysmgt
./.toc
./test2
./bos.sysmgt
./.toc
./a
./b
./c
09:14:39
root@VIOC:[/test/test2/test3]#ls
-l
total 27080
-rw-r--r-- 1 root system 3805 Dec 19 10:44 .toc
-rw-r--r-- 1 root system 0 Dec 21 09:14 a
-rw-r--r-- 1 root system 0 Dec 21 09:14 b
-rw-r----- 1 root system 13854720 Dec 19 10:43 bos.sysmgt
-rw-r--r-- 1 root system 0 Dec 21 09:14 c
drwxr-xr-x 2 root system 256 Dec 21 09:14 test2
09:14:42
root@VIOC:[/test/test2/test3]#cd
test2
09:14:52
root@VIOC:[/test/test2/test3/test2]#ls
09:14:53
root@VIOC:[/test/test2/test3/test2]#cd
..
09:15:33
root@VIOC:[/test/test2/test3]#cd
..
09:15:35
root@VIOC:[/test/test2]#rm
-r *
09:15:40
root@VIOC:[/test/test2]#mkdir
test3
09:15:44
root@VIOC:[/test/test2]#cd
test3
09:15:47
root@VIOC:[/test/test2/test3]#pax
-s:/:./: -rvf /test.tar
USTAR format archive
./test
./test/bos.sysmgt
./test/.toc
./test/test2
./test/test2/bos.sysmgt
./test/test2/.toc
./test/test2/a
./test/test2/b
./test/test2/c
09:16:10
root@VIOC:[/test/test2/test3]#ls
-l
total 0
drwxr-xr-x 3 root system 256 Dec 21 08:59 test
09:16:16
root@VIOC:[/test/test2/test3]#find
. -ls
12288 0 drwxr-xr-x 3 root system 256 Dec 21 09:16 .
12352 0 drwxr-xr-x 3 root system 256 Dec 21 08:59 ./test
12353 13532 -rw-r----- 1 root system 13854720 Dec 19 10:43 ./test/bos.sysmgt
12354 4 -rw-r--r-- 1 root system 3805 Dec 19 10:44 ./test/.toc
12289 0 drwxr-xr-x 2 root system 256 Dec 21 09:14 ./test/test2
12290 13532 -rw-r----- 1 root system 13854720 Dec 19 10:43 ./test/test2/bos.sysmgt
12291 4 -rw-r--r-- 1 root system 3805 Dec 19 10:44 ./test/test2/.toc
12292 0 -rw-r--r-- 1 root system 0 Dec 21 09:14 ./test/test2/a
12293 0 -rw-r--r-- 1 root system 0 Dec 21 09:14 ./test/test2/b
12294 0 -rw-r--r-- 1 root system 0 Dec 21 09:14 ./test/test2/c
09:16:26
root@VIOC:[/test/test2/test3
]#
小结:-s的确是pax最酷的选项,如果谁用tar打包文件时忘了用相对路径,那pax可以帮他一个忙。不过谁用tar打包时,会用绝对路径呢?
========================================================================
任何形式的转载,请写明出处:
email:
beginner@yeah.net
blog:
http://blog.chinaunix.net/index.php?blogId=739
http://www.cublog.cn/u/739/
========================================================================
发表于: 2007-12-21,修改于: 2007-12-21 09:31,已浏览396次,有评论2条
推荐
投诉
网友:
fck
时间:2008-03-11 09:41:59 IP地址:218.61.34.★
很好,这个有点看不明白。
pax -s:/.*/:./: -rvf /test.tar
网友:
beginner-bj
时间:2008-03-11 18:58:44 IP地址:61.144.248.★
这个写法跟sed是一样的
给我留言
版权所有 ChinaUnix.net 页面生成时间:6.90486