linux tar cf

时间:2020-07-09 07:20:03 作者:租号谷

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]

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现linux tar cf有涉嫌版权的内容,欢迎发送邮件至:2145784@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关推荐

打开steam和租号

一、百度打开steam和租号查询 打开steam和租号百度关键词查询 编号 相关词 搜索量 相关结果 百度查询 优化价格 1 打开steam和租号 59445 957.7万 百度打开steam和租号 50.1元 2 cf小辉租号 73140 120.7万