linux tar cf
linux 的命令(cd /root/test && tar cf - .) | (cd /root/test2 && tar xvfp -)请问这条命令是什么意思?
(cd /root/test && tar cf - .)
进入 /root/test 目录,然后 打包当前目录 ( 即原命令中的那个 . ),cf 参数用来指定创建的打包文件, 这里用了 - ,表示打包到标准输出
| 管道, 将前面的标准输出连接到后面的标准输入
(cd /root/test2 && tar xvfp -)
进入 /root/test2 目录,然后解开打包文件, xf 参数用来指定要解包的文件, 这里用了 - ,表示从标准输入解压。
所以,连起来就是 打包 /root/test 下的内容, 再解压到 /root/test2 下。 由于用了管道及标准输入输出,所以这一动作不会产生中间文件。 (想象一下在windows下,你要做同样的事情,就必须先产生一个实际的打包文件,然后拷贝到目的地,然后解压,然后再删除产生的打包文件。
你例子中的这种用法其实没有什么实际意义,因为都是在同一台主机上操作,用 cp 命令就可以了。这种用法用在两台主机之间时就很好用了,比如通过 ssh 来拷贝某个目录
(cd /root/test && tar cf - .) | ssh remote_host "cd /root/test2 && tar xvfp -"
就可以将本地的 /root/test下的内容,通过ssh连接,拷贝到远程 remote_host 上的 /root/test2 下。
linux中“tar -cvf - /home | tar -xvf - -C /tmp/homeback”是什么意思?
我将 /home 里面的文件给他打包bai,但打包的数据不是du纪录到文件,而是传zhi送到标准输出; 经过管线后,将 tar -cvf - /home 传送给后面dao的 tar -xvf - 。后面的这个 - 则是回取用前一个指令的 标准输出,因此,我们就不需要使答用 filename 了!
1、表示标准输出流。减号”-“就是代表标准输出/标准输入
2、通过ssh传送文本
cat id_rsa.pub |ssh root@172.16.1.5 'cat - >> ~/.ssh/authorized_keys'
3、实现复制的例子tar cf - access.log |tar xf - -C /opt
4、脚本中可以这样在crontab里添加一个任务
{ crontab -l; echo "* * * * * /bin/date >> /tmp/log" ; } | crontab -
5、在文件头添加一行,也可以这样玩
cat - a.txt <<<"line num 1" > b.txt
6、只取一列并与另一文件做diff
awk '{ print $1 }' a | diff - b
7、例子, 打包1个文件夹 /var/log/,并用zip压缩,
可以分步执行
#tar -cvf log.tar /var/log/
#zip -r log.tar.zip log.tar
#rm -rf log.tar
写成一条语句就是
tar -cvf log.tar /var/log/ && zip -r log.tar.zip log.tar && rm -rf log.tar
发现第一条语句的输出(log.tar) 就是第二条语句的输入
这种情况下我们可以用 “-” 来取代这个输出输入
直接执行如下语句就ok了
tar -cvf - /var/log | zip -r log.zip -
意思就是 第一条语句不再输入到1个具体文件,而输出到stdout中, 而作为第二条件的标准输入(stdin), 而stdin 和 stdout都可以用“-”来取代。
这样的话就不会有中间文件生成了~
linux 中tar 命令,菜鸟级问题~
看起来貌似没有问题。但是2113把“/”去掉肯定不行啊。根目录都没有了怎么搞。
就我知道的,一般对于tar包有5261两种语法方式。举个例子,就你的文件夹来说,我在/home/jie
有个Desktop文件,大包4102成test.tar。那么,
1.如果光大包不压缩,则为1653:tar -cvf test.tar /home/jie/Desktop/
2.打包后,以dzip压缩。那么:tar -zcvf test.tar.gz /home/jie/Desktop
我现在身边没有LINUX虚拟机,好久没用版,忘记了。那么你再试试打包的时候加上路径试试呢?比如写成/home/test.tar。
不好意思,忘记了。要是来得及,等我权过两天回去试试
怎么用linux 命令解压 .tar 文件?
把常用的tar解压命令总结下,当作备忘:
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩tar –cvf jpg.tar *.jpg 将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar 解压 tar包
tar -xzvf file.tar.gz 解压tar.gz
tar -xjvf file.tar.bz2 解压 tar.bz2
tar –xZvf file.tar.Z 解压tar.Z
unrar e file.rar 解压rar
unzip file.zip 解压zip
总结
*.tar 用 tar –xvf 解压
*.gz 用 gzip -d或者gunzip 解压
*.tar.gz和*.tgz 用 tar –xzf 解压
*.bz2 用 bzip2 -d或者用bunzip2 解压
*.tar.bz2用tar –xjf 解压
*.Z 用 uncompress 解压
*.tar.Z 用tar –xZf 解压
*.rar 用 unrar e解压
*.zip 用 unzip 解压
参考资料
CSDN.博客[引用时间2018-1-21]