<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>A18制造 &#187; tar</title>
	<atom:link href="http://a18zhizao.com/ytag/tar/feed" rel="self" type="application/rss+xml" />
	<link>http://a18zhizao.com</link>
	<description>梦想的种子飞入了大地，所需要的只有时间。</description>
	<lastBuildDate>Tue, 24 Jan 2012 11:50:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>tar打包排除某个或多个子目录 &#124; AWK命令</title>
		<link>http://a18zhizao.com/y2010/1406_tar-package-exclude-one-or-more-subdirectories-awk-command.html</link>
		<comments>http://a18zhizao.com/y2010/1406_tar-package-exclude-one-or-more-subdirectories-awk-command.html#comments</comments>
		<pubDate>Sun, 25 Apr 2010 15:01:47 +0000</pubDate>
		<dc:creator>a18ccms</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[子目录]]></category>

		<guid isPermaLink="false">http://a18zhizao.com/?p=1406</guid>
		<description><![CDATA[下午遇到一个小问题：文件目录结构如下 /dir0- -/dir1         &#60;---该文件很大，欲排除 -/dir2         &#60;---该文件很大，欲排除 -/dir3         &#60;---目标目录之一 -index.php  &#60;---目标文件之一 .............以下省略N个子目录和子文件............. 目录下很多子目录，而我需要打包。目标是   /wwwroot 下所有子文件+/dir3 ，于是那些多余的子目录就让我头疼， 怎样在不影响文件结构的情况下打包呢，搜索网上，很多人用下面这个方法： 但是并不好，要是排除的部分是多出，要是子目录过多，语句该要写多久啊，后来又发现网上说可以直接使用排除参数X 新建文件excludefiles在当前目录中，内容为 注意： tar命令里面的目标文件是绝对路径格式，excludefile里面就也必须是绝对路径； tar命令里面的目标文件是相对路径格式，excludefile里面就也必须是相对路径； 后来 搜索找到了自力博客的一样问题的文章 说可以用 AWK 于是去搜索了一下它：Awk学习笔记 发现它提供的语句可以精简，可以这样写： 这个语句很好理解： ls -l 列出所有文件和目录； awk '\^-\ {print $8}' 正则只保留文件行，获得第八列的所有文件名； xargs tar 把上一步得到的名称传参给tar命令。 一切OK，轻松完成打包喽！]]></description>
			<content:encoded><![CDATA[<p><strong>下午遇到一个小问题：</strong>文件目录结构如下</p>
<blockquote><p>/dir0-<br />
-/dir1         &lt;---该文件很大，欲排除<br />
-/dir2         &lt;---该文件很大，欲排除<br />
-/dir3         &lt;---目标目录之一<br />
-index.php  &lt;---目标文件之一<br />
.............以下省略N个子目录和子文件.............</p></blockquote>
<p>目录下很多子目录，而我需要打包。目标是   /wwwroot 下所有<strong>子文件</strong>+/dir3  ，于是那些多余的子目录就让我头疼，<br />
怎样在不影响文件结构的情况下打包呢，搜索网上，很多人用下面这个方法：<br />
<span id="more-1406"></span></p>
<pre class="brush: bash; title: ; notranslate">
tar cvzf \home\all.tar.gz dir0  --exclude dir1 --exclude dir2
</pre>
<p>但是并不好，要是排除的部分是多出，要是子目录过多，语句该要写多久啊，后来又发现网上说可以直接使用排除参数X</p>
<p>新建文件excludefiles在当前目录中，内容为</p>
<pre class="brush: bash; title: ; notranslate">
cat excludefiles
dir1
dir2
tar -cvzf \home\all.tar.gz -X excludefile dir1
</pre>
<blockquote><p><strong>注意：</strong><br />
tar命令里面的目标文件是绝对路径格式，excludefile里面就也必须是绝对路径；<br />
tar命令里面的目标文件是相对路径格式，excludefile里面就也必须是相对路径；</p></blockquote>
<p>后来 搜索找到了<a href="http://www.hzlzh.com/ssh-tar-awk/" target="_blank">自力博客的一样问题的文章</a> 说可以用 <strong>AWK</strong> 于是去搜索了一下它：<a href="http://www.linux.gov.cn/shell/awk.htm" target="_blank">Awk学习笔记</a> 发现它提供的语句可以精简，可以这样写：</p>
<pre class="brush: bash; title: ; notranslate">
ls -l | awk '\^-\ {print  $8}' | xargs tar cvfz \home\dir0.tar.gz
</pre>
<p>这个语句很好理解：</p>
<p><strong>ls -l </strong>列出所有文件和目录<strong>；</strong><br />
<strong>awk '\^-\ {print $8}'</strong> 正则只保留文件行，获得第八列的所有文件名；<br />
<strong>xargs tar</strong> 把上一步得到的名称传参给tar命令。<br />
一切OK，轻松完成打包喽！</p>
]]></content:encoded>
			<wfw:commentRss>http://a18zhizao.com/y2010/1406_tar-package-exclude-one-or-more-subdirectories-awk-command.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>linux解压tar命令</title>
		<link>http://a18zhizao.com/y2010/1209_linux-unzip-tar-command.html</link>
		<comments>http://a18zhizao.com/y2010/1209_linux-unzip-tar-command.html#comments</comments>
		<pubDate>Thu, 11 Feb 2010 11:03:21 +0000</pubDate>
		<dc:creator>a18ccms</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[解压]]></category>

		<guid isPermaLink="false">http://www.a18zhizao.cn/y2010/1209_linux-unzip-tar-command.html</guid>
		<description><![CDATA[linux解压 tar命令 tar命令 tar [-cxtzjvfpPN] 文件与目录 .... 参数： -c ：建立一个压缩文件的参数指令(create 的意思)； -x ：解开一个压缩文件的参数指令！ -t ：查看 tarfile 里面的文件！ 特别注意，在参数的下达中， c/x/t 仅能存在一个！不可同时存在！ 因为不可能同时压缩与解压缩。 -z ：是否同时具有 gzip 的属性？亦即是否需要用 gzip 压缩？ -j ：是否同时具有 bzip2 的属性？亦即是否需要用 bzip2 压缩？ -v ：压缩的过程中显示文件！这个常用，但不建议用在背景执行过程！ -f ：使用档名，请留意，在 f 之后要立即接档名喔！不要再加参数！ 　　　例如使用『 tar -zcvfP tfile sfile』就是错误的写法，要写成 　　　『 tar -zcvPf tfile sfile』才对喔！ -p ：使用原文件的原来属性（属性不会依据使用者而变） -P ：可以使用绝对路径来压缩！ -N ：比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中！ [...]]]></description>
			<content:encoded><![CDATA[<p>linux解压 tar命令<br />
tar命令<br />
tar [-cxtzjvfpPN] 文件与目录 ....<br />
参数：<br />
-c ：建立一个压缩文件的参数指令(create 的意思)；<br />
-x ：解开一个压缩文件的参数指令！<br />
-t ：查看 tarfile 里面的文件！<br />
特别注意，在参数的下达中， c/x/t 仅能存在一个！不可同时存在！<br />
因为不可能同时压缩与解压缩。<br />
-z ：是否同时具有 gzip 的属性？亦即是否需要用 gzip 压缩？<br />
-j ：是否同时具有 bzip2 的属性？亦即是否需要用 bzip2 压缩？<br />
-v ：压缩的过程中显示文件！这个常用，但不建议用在背景执行过程！<br />
-f ：使用档名，请留意，在 f 之后要立即接档名喔！不要再加参数！<br />
　　　例如使用『 tar -zcvfP tfile sfile』就是错误的写法，要写成<br />
　　　『 tar -zcvPf tfile sfile』才对喔！<br />
-p ：使用原文件的原来属性（属性不会依据使用者而变）<br />
-P ：可以使用绝对路径来压缩！<br />
-N ：比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中！<br />
--exclude FILE：在压缩的过程中，不要将 FILE 打包！<br />
范例：<br />
范例一：将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar<br />
[root@linux ~]# tar -cvf /tmp/etc.tar /etc<==仅打包，不压缩！<br />
[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc<==打包后，以 gzip 压缩<br />
[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc<==打包后，以 bzip2 压缩<br />
<span id="more-1209"></span><br />
# 特别注意，在参数 f 之后的文件档名是自己取的，我们习惯上都用 .tar 来作为辨识。<br />
# 如果加 z 参数，则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ～<br />
# 如果加 j 参数，则以 .tar.bz2 来作为附档名啊～<br />
# 上述指令在执行的时候，会显示一个警告讯息：<br />
# 『tar: Removing leading `/" from member names』那是关於绝对路径的特殊设定。</p>
<p>范例二：查阅上述 /tmp/etc.tar.gz 文件内有哪些文件？<br />
[root@linux ~]# tar -ztvf /tmp/etc.tar.gz<br />
# 由於我们使用 gzip 压缩，所以要查阅该 tar file 内的文件时，<br />
# 就得要加上 z 这个参数了！这很重要的！</p>
<p>范例三：将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下<br />
[root@linux ~]# cd /usr/local/src<br />
[root@linux src]# tar -zxvf /tmp/etc.tar.gz<br />
# 在预设的情况下，我们可以将压缩档在任何地方解开的！以这个范例来说，<br />
# 我先将工作目录变换到 /usr/local/src 底下，并且解开 /tmp/etc.tar.gz ，<br />
# 则解开的目录会在 /usr/local/src/etc 呢！另外，如果您进入 /usr/local/src/etc<br />
# 则会发现，该目录下的文件属性与 /etc/ 可能会有所不同喔！</p>
<p>范例四：在 /tmp 底下，我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已<br />
[root@linux ~]# cd /tmp<br />
[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd<br />
# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称，如果单只要一个文件，<br />
# 就可以透过这个方式来下达！注意到！ etc.tar.gz 内的根目录 / 是被拿掉了！</p>
<p>范例五：将 /etc/ 内的所有文件备份下来，并且保存其权限！<br />
[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc<br />
# 这个 -p 的属性是很重要的，尤其是当您要保留原本文件的属性时！</p>
<p>范例六：在 /home 当中，比 2005/06/01 新的文件才备份<br />
[root@linux ~]# tar -N "2005/06/01" -zcvf home.tar.gz /home</p>
<p>范例七：我要备份 /home, /etc ，但不要 /home/dmtsai<br />
[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc</p>
<p>范例八：将 /etc/ 打包后直接解开在 /tmp 底下，而不产生文件！<br />
[root@linux ~]# cd /tmp<br />
[root@linux tmp]# tar -cvf - /etc | tar -xvf -<br />
# 这个动作有点像是 cp -r /etc /tmp 啦～依旧是有其有用途的！<br />
# 要注意的地方在於输出档变成 - 而输入档也变成 - ，又有一个 | 存在～<br />
# 这分别代表 standard output, standard input 与管线命令啦！<br />
# 这部分我们会在 Bash shell 时，再次提到这个指令跟大家再解释啰！</p>
]]></content:encoded>
			<wfw:commentRss>http://a18zhizao.com/y2010/1209_linux-unzip-tar-command.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

