Linux下最常用的打包命令就是tar,使用tar命令打包后,就可以用其它的命令来进行压缩了。tar命令的使用方法如下:
tar [-cxtzjvfpPN]文件与目录 参数说明: -c :建立一个打包文件; -x :解开一个打包文件; -t :查看 tar包里面的文件; (特别注意,在选择参数时,c/x/t仅能存在一个,不可同时存在,因为不可能同时压缩与解压缩。) -z :打包后用gzip压缩,生成.tar.gz文件; -j :打包后用zip2压缩,生成.tar.bz2文件; -v :压缩的过程中显示文件; -f :使用文件名,请留意,在f之后要立即接文件名,不要再加其它参数; -p :保持原文件的属性; -P :使用绝对路径来压缩; -N :设定日期(yyyy/mm/dd),比后面接的日期还要新的文件才会被打包进新建的文件中; --exclude FILE:在打包的过程中,不要将FILE打包。
举几个例子:
例一:将整个/etc目录下的文件全部打包成为/tmp/etc.tar tar -cvf /tmp/etc.tar/etc #仅打包,不压缩 tar -zcvf /tmp/etc.tar.gz/etc #打包后,以gzip压缩 tar -jcvf /tmp/etc.tar.bz2/etc #打包后,以bzip2压缩
例二:查阅上述/tmp/etc.tar.gz文件内有哪些文件 tar -ztvf /tmp/etc.tar.gz
例三:将/tmp/etc.tar.gz文件解压缩到/usr/local/src下 cd/usr/local/src #先将工作目录变换到/usr/local/src下 tar -zxvf /tmp/etc.tar.gz 例四:只将/tmp/etc.tar.gz内的etc/passwd解压到/tmp下 cd /tmp tar -zxvf /tmp/etc.tar.gz etc/passwd
例五:将/etc内的所有文件备份下来,并且保存其权限! tar -zxvpf /tmp/etc.tar.gz /etc
例六:在/home当中,比2005/06/01新的文件才备份 tar -N '2005/06/01' -zcvf home.tar.gz /home
例七:备份/home、/etc,但不要/home/dmtsai tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/*/etc
例八:将/etc打包后直接解开在/tmp底下,而不产生文件! cd /tmp tar -cvf - /etc | tar -xvf -
现在有一个需求,不知道该如何才能实现 压缩: tar czvf /data/backup/test.tar.gz /data/a/b/directory 解压: cd /data/test tar xzvf /data/backup/test.tar.gz 问题是,解压后的文件,在/data/test/data/a/b/directory里面 能否压缩时只保留directory以下的所有目录,以directory作为/,而不是/data/a/b/directory? 问题已经解决,找到了GNU tar的官方资料 http://www.delorie.com/gnu/docs/tar/tar_98.html 这样写就可以解决了 tar czvf /data/backup/test.tar.gz /data/a/b/directory 改成 tar czvf /data/backup/test.tar.gz -C/data/a/b(空格)directory
-C是临时切换工作目录,-P是绝对路径,在这里只用到-C参数就行了
