LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1293|回复: 6

tar命令能不能这样用?

[复制链接]
发表于 2011-4-9 08:36:42 | 显示全部楼层 |阅读模式
我想打包一个文件夹,里面很有多子文件夹,其中有两个特别大,不想打包了,只打包其余子文件夹,除了一个一个输入子文件名外还有没有办法排除那两个子文件夹不备份呢?

在网上找到一个解决办法,正在试验


----------------
在我们需要对网站进行备份、转移时需要对网站目录进行打包备份。但有时候网站中的某个子目录由于种种原因不适合备份(过大,临时文件 等等)。此时通过tar命令,加入 exclude 参数就可以实现这样的目标。
具体的命令如下:

tar cfz yyserver.tk.tar.gz /var/www/yyserver.tk –exclude=var/www/yyserver.tk/images

如果需要排除多个子目录,那么就执行

tar cfz yyserver.tk.tar.gz /var/www/yyserver.tk –exclude=/var/www/yyserver.tk/images –exclude=/var/www/yyserver.tk/files/images

而如果主机的 tar 是 GNU 的版本,exclude 参数就要放在前面了:

tar cfz yyserver.tk.tar.gz –exclude=/var/www/yyserver.tk/images /var/www/yyserver.tk

注意 –exclude后面的排除目录后不能带/ ,否则不起作用。
发表于 2011-4-9 09:56:14 | 显示全部楼层
不知道啊。我只知道 rsync 有 --exclude= 选项,不知道 tar 有没有。
看了看 man page ,有的。不过由于我不熟悉 tar ,LZ 不妨自己看看 man page 好了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-9 10:18:11 | 显示全部楼层
谢谢yuihji
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-9 10:44:39 | 显示全部楼层
在我们需要对网站进行备份、转移时需要对网站目录进行打包备份。但有时候网站中的某个子目录由于种种原因不适合备份(过大,临时文件 等等)。此时通过tar命令,加入 exclude 参数就可以实现这样的目标。
具体的命令如下:

tar cfz yyserver.tk.tar.gz /var/www/yyserver.tk –exclude=var/www/yyserver.tk/images

如果需要排除多个子目录,那么就执行

tar cfz yyserver.tk.tar.gz /var/www/yyserver.tk –exclude=/var/www/yyserver.tk/images –exclude=/var/www/yyserver.tk/files/images

而如果主机的 tar 是 GNU 的版本,exclude 参数就要放在前面了:

tar cfz yyserver.tk.tar.gz –exclude=/var/www/yyserver.tk/images /var/www/yyserver.tk

注意 –exclude后面的排除目录后不能带/ ,否则不起作用。
回复 支持 反对

使用道具 举报

发表于 2011-6-16 08:46:58 | 显示全部楼层
tar

名称:GNU的打包工具。

总揽:

    tar[-]A --catenate --concatenate|c --create|d --diff --compare|

       --delete|r --append|t --list|--test-label|u --update|x --extra

       --get [options] [Pathname……]

描述:

   tar命令用于从一个磁带或磁盘归档中转存和加压的工具。

   tar的第一个参数应该是一个函数。为下面的一种:Acdrtux,或为长整型的选项。

一个函数的前面可以加上也可以不加上'-'字符。而一个长的选项必须加上'--'字符。

一些选项后面有带参数的话需要单独使用一个分隔符。对与带参数的长选项需要使用

=Value来指定值。

Function字符:

    -A,--catenate,--concatenate:将指定的归档文件与原归档文件合并。(注:必须

        为.tar的两个归档文件)

    -c,--create:创建新的归档文件。

    -d,--diff,--compare: 比较归档文件与文件的不同之处。

    --delete:从归档文件中删除指定的文件。(必须为.tar的文件)

    -r,--append:将指定的文件追加到归档文件的尾部。(必须为.tar的文件)

    -t,--list :显示归档文件的内容。

    -u,--update 只追加比归档文件中的文件更新的文件。(必须为.tar的文件)

    -x,--extract,--get:从归档文件中解压出文件。

Other options:

     operation modifiers:

         -[0-7][lmh] :选择驱动和信息密度。

         -?,--help:显示帮助信息并退出。

         -a,--auto-compress:根据归档文件的后缀自动选择压缩工具。

         --add-file=File:将指定的文件加到归档文件。

         -C,--directory Dir:将工作目录转为Dir.

         --backup:移除前先备份。

         --no-auto-compress:不根据归档文件的后缀自动使用compress命令压缩。

         --atime-preserve:在转存文件时保留访问时间。

         --anchored:从文件名开始匹配。

         --no-anchored:从'/'后匹配。

         -b,--blocking-factor Blocks:每条记录为Blocks*512大小。

         --check-device:当创建一个递增的归档文件时检查设备号。

         --no-check-device:当创建一个递增的归档文件时不检查设备号。

         --checkpoint:显示每第Number(默认为10)条记录的处理信息。

         --delay-directory-restore:延迟设置修改时间和允许解压。

         --no-delay-directory-restore:取消--delay-directory-restore设置。

         --exclude=Pattern:不包括满足Pattern的文件。

         --exclude-caches:不包括包含CACHEDIR.TAG的目录。

         --exclude-tag=File:不包括含指定文件File的目录的所有内容。但包含

           File文件。

         --exclude-tag-all=File:不包括含指定文件File的目录中的所有内容。

         --exclude-tag-under=File:不包括含指定文件的目录下所有的内容。

         -f,--file Archive:指定归档文件的文件名或设备归档文件.

         --force-local:即使归档文件名中含:也强制认为归档文件为本地归档文件。

         --group=Name:强制认为Name为增加的文件组。

         -h,--dereference:进入符号连接目录中。

         --HANG:挂起SECS秒(默认为3600s)

         --ignore-zeros,-i:忽略归档文件中的0块的文件。

         -I,--use-compress-program Prog:指定压缩程序。

         --ignore-case:忽略大小写。

         --no-ignore-case:不忽略大小写(此为默认)

         --ignore-command-error:忽略命令行错误。

         --no-ignore-command-error:不忽略命令行错误。

         --ignore-failed-read:忽略读取失败错误。

         --index-file=File:将详细输出到指定文件中。

         -j,--bzip2:使用bzip2程序压缩。

         -J,--xz:使用xz压缩。

         -z,--gzip:使用gzip压缩。

         -Z,--compress,--uncompress:使用compress压缩。
        
         -k,--keep-old-files:当解压时若目标文件已存在则不替换它。

         --keep-newer-files:不替换已存在的目标文件比解压时归档文件里

            更新的文件。

         -l,--check-links:若不是所有链接文件都被转存则打印一条信息。

         -L,--tap-length Number:在归档文件写入了Number*1024b时更换磁带。

         --lzma: 使用lzma压缩。

         --lzop:使用lzop压缩。

         -M,--multi-volume:创建多磁盘的归档文件。

         -m:不解压文件的修改时间。

         --mode=Changes:强制改变追加的文件的模式为Change

         --numeric-owner:总是使用用户或组的ID号。

         -O,--to-stdout:将解压文件输出到标准输出上。

         --overwrite:当解压时若目标文件已存在则覆盖。

         --overwrite-dir:当解压时若目标目录已存在则覆盖。

         --no-overwrite-dir:不覆盖目录。

         --owner=Name:强制将Name用户的文件追加。

         -p,--preserve-permissions,--same-permissions

               保留文件的权限(仅管理员使用)

         -s,--preserve-order,--same-order

               保留文件的顺序。

          --preserve:等价与 -p和-s

          --recursive:递归处理目录及其子目录的内容(此为默认)

          --no-recursive: 不递归处理。

          --same-owner:试着解压属于同一用户的文件。

          --no-same-owner:只解压你自己的文件。

          -T,--files-from File:从指定的文件File中读取解压和创建的文件名。

          --to-command=Command:将解压的文件通过管道传给指定的命令Command

          --totals:在执行完归档文件后打印总字节数。

          --transform,--xform Expression:

               使用Expression来转换文件名。

           -w,--interactive,--confirmation:作每个动作都会询问你。

           -W,--verify:在写归档文件后试图核实归档文件。

           --wildcard:使用通配符,此为默认。

           --no-wildcard:不使用通配符。

           -X,--exclude-from File:从指定文件File中读取不包括的文件。

使用权限:

    所有者

实例:

    tar -cf example.tar example #创建归档文件example.tar

   
    tar -czf example.tar.gz example #创建并使用gzip压缩归档文件example.tar.gz

   
    tar -xzf example.tar.gz -C dir#解压归档文件的内容到dir目录中

   
    tar -Af 1.tar 2.tar#将2.tar合并到1.tar中

    tar czf example.tgz example --exclude=example1 --exclude=example2 #备份example目录下除了example1和example2外所有的文件
回复 支持 反对

使用道具 举报

发表于 2011-6-16 08:47:58 | 显示全部楼层
tar

名称:GNU的打包工具。

总揽:

    tar[-]A --catenate --concatenate|c --create|d --diff --compare|

       --delete|r --append|t --list|--test-label|u --update|x --extra

       --get [options] [Pathname……]

描述:

   tar命令用于从一个磁带或磁盘归档中转存和加压的工具。

   tar的第一个参数应该是一个函数。为下面的一种:Acdrtux,或为长整型的选项。

一个函数的前面可以加上也可以不加上'-'字符。而一个长的选项必须加上'--'字符。

一些选项后面有带参数的话需要单独使用一个分隔符。对与带参数的长选项需要使用

=Value来指定值。

Function字符:

    -A,--catenate,--concatenate:将指定的归档文件与原归档文件合并。(注:必须

        为.tar的两个归档文件)

    -c,--create:创建新的归档文件。

    -d,--diff,--compare: 比较归档文件与文件的不同之处。

    --delete:从归档文件中删除指定的文件。(必须为.tar的文件)

    -r,--append:将指定的文件追加到归档文件的尾部。(必须为.tar的文件)

    -t,--list :显示归档文件的内容。

    -u,--update 只追加比归档文件中的文件更新的文件。(必须为.tar的文件)

    -x,--extract,--get:从归档文件中解压出文件。

Other options:

     operation modifiers:

         -[0-7][lmh] :选择驱动和信息密度。

         -?,--help:显示帮助信息并退出。

         -a,--auto-compress:根据归档文件的后缀自动选择压缩工具。

         --add-file=File:将指定的文件加到归档文件。

         -C,--directory Dir:将工作目录转为Dir.

         --backup:移除前先备份。

         --no-auto-compress:不根据归档文件的后缀自动使用compress命令压缩。

         --atime-preserve:在转存文件时保留访问时间。

         --anchored:从文件名开始匹配。

         --no-anchored:从'/'后匹配。

         -b,--blocking-factor Blocks:每条记录为Blocks*512大小。

         --check-device:当创建一个递增的归档文件时检查设备号。

         --no-check-device:当创建一个递增的归档文件时不检查设备号。

         --checkpoint:显示每第Number(默认为10)条记录的处理信息。

         --delay-directory-restore:延迟设置修改时间和允许解压。

         --no-delay-directory-restore:取消--delay-directory-restore设置。

         --exclude=Pattern:不包括满足Pattern的文件。

         --exclude-caches:不包括包含CACHEDIR.TAG的目录。

         --exclude-tag=File:不包括含指定文件File的目录的所有内容。但包含

           File文件。

         --exclude-tag-all=File:不包括含指定文件File的目录中的所有内容。

         --exclude-tag-under=File:不包括含指定文件的目录下所有的内容。

         -f,--file Archive:指定归档文件的文件名或设备归档文件.

         --force-local:即使归档文件名中含:也强制认为归档文件为本地归档文件。

         --group=Name:强制认为Name为增加的文件组。

         -h,--dereference:进入符号连接目录中。

         --HANG:挂起SECS秒(默认为3600s)

         --ignore-zeros,-i:忽略归档文件中的0块的文件。

         -I,--use-compress-program Prog:指定压缩程序。

         --ignore-case:忽略大小写。

         --no-ignore-case:不忽略大小写(此为默认)

         --ignore-command-error:忽略命令行错误。

         --no-ignore-command-error:不忽略命令行错误。

         --ignore-failed-read:忽略读取失败错误。

         --index-file=File:将详细输出到指定文件中。

         -j,--bzip2:使用bzip2程序压缩。

         -J,--xz:使用xz压缩。

         -z,--gzip:使用gzip压缩。

         -Z,--compress,--uncompress:使用compress压缩。
        
         -k,--keep-old-files:当解压时若目标文件已存在则不替换它。

         --keep-newer-files:不替换已存在的目标文件比解压时归档文件里

            更新的文件。

         -l,--check-links:若不是所有链接文件都被转存则打印一条信息。

         -L,--tap-length Number:在归档文件写入了Number*1024b时更换磁带。

         --lzma: 使用lzma压缩。

         --lzop:使用lzop压缩。

         -M,--multi-volume:创建多磁盘的归档文件。

         -m:不解压文件的修改时间。

         --mode=Changes:强制改变追加的文件的模式为Change

         --numeric-owner:总是使用用户或组的ID号。

         -O,--to-stdout:将解压文件输出到标准输出上。

         --overwrite:当解压时若目标文件已存在则覆盖。

         --overwrite-dir:当解压时若目标目录已存在则覆盖。

         --no-overwrite-dir:不覆盖目录。

         --owner=Name:强制将Name用户的文件追加。

         -p,--preserve-permissions,--same-permissions

               保留文件的权限(仅管理员使用)

         -s,--preserve-order,--same-order

               保留文件的顺序。

          --preserve:等价与 -p和-s

          --recursive:递归处理目录及其子目录的内容(此为默认)

          --no-recursive: 不递归处理。

          --same-owner:试着解压属于同一用户的文件。

          --no-same-owner:只解压你自己的文件。

          -T,--files-from File:从指定的文件File中读取解压和创建的文件名。

          --to-command=Command:将解压的文件通过管道传给指定的命令Command

          --totals:在执行完归档文件后打印总字节数。

          --transform,--xform Expression:

               使用Expression来转换文件名。

           -w,--interactive,--confirmation:作每个动作都会询问你。

           -W,--verify:在写归档文件后试图核实归档文件。

           --wildcard:使用通配符,此为默认。

           --no-wildcard:不使用通配符。

           -X,--exclude-from File:从指定文件File中读取不包括的文件。

使用权限:

    所有者

实例:

    tar -cf example.tar example #创建归档文件example.tar

   
    tar -czf example.tar.gz example #创建并使用gzip压缩归档文件example.tar.gz

   
    tar -xzf example.tar.gz -C dir#解压归档文件的内容到dir目录中

   
    tar -Af 1.tar 2.tar#将2.tar合并到1.tar中

    tar czf example.tgz example --exclude=example1 --exclude=example2 #备份example目录下除了example1和example2外所有的文件
回复 支持 反对

使用道具 举报

发表于 2011-6-16 12:13:36 | 显示全部楼层
其实find与tar配合还是很不错的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表