Linux

如何僅顯示使用 tar 提取的文件,而不是未提取/未覆蓋的文件?

  • November 20, 2019

我正在使用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

但是這些文件都不會被提取!

我只想顯示提取的文件(如果它們不存在)!

這可以使用star

star -C / -xv -nowarn < /tmp/update.tar

似乎gtar沒有完全複製來自star;-)的功能

OSS 友好的 Linux 發行版有二進制包,對於其他發行版,在從http://sourceforge.net/projects/schilytools/files/star獲取最近的schilytools源存檔後編譯它

目前的明星版本是 1.6.1。請注意,-nowarn僅提取存檔中較新文件的選項和預設設置是從 1985 年開始的,這早於gtar開始。

請注意,由於 Linux 實現了慢速文件系統,因此建議您查看star手冊頁中的選項-no-fsync. 這允許您切換star到與您使用的一樣不安全的模式gtar

引用自:https://unix.stackexchange.com/questions/553122