我正在使用 提取 tar 存档tar -xf /tmp/update.tar -C / -v --keep-newer-files
。该-v
选项是显示所有已处理的文件,该--keep-newer-files
选项是自我解释的。
由于所有文件都已存在,我得到以下输出:
usr/local/bin/execstate.log
tar: Current ‘usr/local/bin/execstate.log’ is newer or same age
usr/local/bin/dblist.sh
tar: Current ‘usr/local/bin/dblist.sh’ is newer or same age
usr/local/bin/dbblacklist.sh
tar: Current ‘usr/local/bin/dbblacklist.sh’ is newer or same age
我知道,该--warning-no-ignore-newer
选项会切换警告,但输出是:
usr/local/bin/execstate.log
usr/local/bin/dblist.sh
usr/local/bin/dbblacklist.sh
但这些文件都不会被提取!
我只想显示提取的文件(如果它们尚不存在)!
答案1
这可以使用以下方法完成star
:
star -C / -xv -nowarn < /tmp/update.tar
似乎gtar
没有完全复制其中的功能star
;-)
OSS 友好的 Linux 发行版有star
二进制包,对于其他发行版,请在schilytools
从以下位置获取最新的源存档后进行编译http://sourceforge.net/projects/schilytools/files/
当前的明星版本是 1.6.1。请注意,-nowarn
仅提取存档中较新文件的选项和默认设置是从 1985 年开始的,这早在gtar
开始之前就已存在。
请注意,由于 Linux 实现慢速文件系统,因此建议检查star
选项的手册页-no-fsync
。这允许您切换star
到与您使用的一样不安全的模式gtar
。