在这个网页上看到(cd backup && tar c .) | (cd backupArchives && tar xf -)这条命令,对于 tar 直接用管道进行打包解包这个操作直呼少见,man tar中也没看到相关介绍
1
codehz 2021 年 3 月 4 日 via Android
(就是约定俗称,最初的原因就是这玩意天然不适合做文件名,刚好可以用来表达标准输入输出(
按标准写法的话是直接用-O 表示标准输出,不写文件名就是标准输入( |
2
polaa 2021 年 3 月 4 日
man tar 里有
-f file, --file file Read the archive from or write the archive to the specified file. The filename can be - for standard input or standard output. The default varies by system; on FreeBSD, the default is /dev/sa0; on Linux, the default is /dev/st0. |
3
billlee 2021 年 3 月 4 日
GNU tar 这里也可以不指定 f 选项,没有 f 时就是读标准输入
GNU cp 可以用 cp -rT backup backupArchives 来达到同样目的 但 POSIX 里面 tar 不指定 f 时的输入是不确定的. POSIX cp 也没有 -T 这个选项,所以那个网页才给了个这么绕的命令吧 |
4
billlee 2021 年 3 月 4 日
|
6
Usaki 2021 年 3 月 5 日 via Android
最近用 pigz 和 tar 也遇到这个-了,不加还报错
|
7
xltfes OP @polaa 手册居然还有不一样的,用的 tar 不一样么?
tar --version tar (GNU tar) 1.29 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. |
9
julyclyde 2021 年 3 月 7 日
man tar 不介绍是因为这事和 tar 根本没关系
只是把管道当作文件操作而已 |