- 论坛徽章:
- 1
|
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
[email=root@VIOC:[/test]#ls]root@VIOC:[/test]#ls[/email]
-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
[email=root@VIOC:[/test]#tar]root@VIOC:[/test]#tar[/email]
-cvf /test.tar /test
a /test
a /test/bos.sysmgt 27060 blocks.
a /test/.toc 8 blocks.
08:59:53
[email=root@VIOC:[/test]#mkdir]root@VIOC:[/test]#mkdir[/email]
test2
09:00:00
[email=root@VIOC:[/test]#cd]root@VIOC:[/test]#cd[/email]
test2
09:00:03
[email=root@VIOC:[/test/test2]#pax]root@VIOC:[/test/test2]#pax[/email]
-s:/.*/:./: -rvf /test.tar
USTAR format archive
/test
./bos.sysmgt
./.toc
09:00:10
[email=root@VIOC:[/test/test2]#ls]root@VIOC:[/test/test2]#ls[/email]
-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
[email=root@VIOC:[/test/test2]root@VIOC:[/test/test2[/email]
]#
又想到,如果在tar的时候源目录里包含子目录会怎么样呢?根据需要,灵活地改一下-s:/.*/:./:就可以了。过程如下:
09:02:16
[email=root@VIOC:[/test/test2]#touch]root@VIOC:[/test/test2]#touch[/email]
a b c
09:14:08
[email=root@VIOC:[/test/test2]#tar]root@VIOC:[/test/test2]#tar[/email]
-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
[email=root@VIOC:[/test/test2]#mkdir]root@VIOC:[/test/test2]#mkdir[/email]
test3
09:14:28
[email=root@VIOC:[/test/test2]#cd]root@VIOC:[/test/test2]#cd[/email]
test3
09:14:31
[email=root@VIOC:[/test/test2/test3]#pax]root@VIOC:[/test/test2/test3]#pax[/email]
-s:/.*/:./: -rvf /test.tar
USTAR format archive
/test
./bos.sysmgt
./.toc
./test2
./bos.sysmgt
./.toc
./a
./b
./c
09:14:39
[email=root@VIOC:[/test/test2/test3]#ls]root@VIOC:[/test/test2/test3]#ls[/email]
-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
[email=root@VIOC:[/test/test2/test3]#cd]root@VIOC:[/test/test2/test3]#cd[/email]
test2
09:14:52
[email=root@VIOC:[/test/test2/test3/test2]#ls]root@VIOC:[/test/test2/test3/test2]#ls[/email]
09:14:53
[email=root@VIOC:[/test/test2/test3/test2]#cd]root@VIOC:[/test/test2/test3/test2]#cd[/email]
..
09:15:33
[email=root@VIOC:[/test/test2/test3]#cd]root@VIOC:[/test/test2/test3]#cd[/email]
..
09:15:35
[email=root@VIOC:[/test/test2]#rm]root@VIOC:[/test/test2]#rm[/email]
-r *
09:15:40
[email=root@VIOC:[/test/test2]#mkdir]root@VIOC:[/test/test2]#mkdir[/email]
test3
09:15:44
[email=root@VIOC:[/test/test2]#cd]root@VIOC:[/test/test2]#cd[/email]
test3
09:15:47
[email=root@VIOC:[/test/test2/test3]#pax]root@VIOC:[/test/test2/test3]#pax[/email]
-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
[email=root@VIOC:[/test/test2/test3]#ls]root@VIOC:[/test/test2/test3]#ls[/email]
-l
total 0
drwxr-xr-x 3 root system 256 Dec 21 08:59 test
09:16:16
[email=root@VIOC:[/test/test2/test3]#find]root@VIOC:[/test/test2/test3]#find[/email]
. -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
[email=root@VIOC:[/test/test2/test3]root@VIOC:[/test/test2/test3[/email]
]#
小结:-s的确是pax最酷的选项,如果谁用tar打包文件时忘了用相对路径,那pax可以帮他一个忙。不过谁用tar打包时,会用绝对路径呢?
========================================================================
任何形式的转载,请写明出处:
email:
beginner@yeah.net
blog:
http://blog.chinaunix.net/index.php?blogId=739
http://www.cublog.cn/u/739/
========================================================================
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/739/showart_446921.html |
|