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
.
star
Linux는 느린 파일 시스템을 구현하므로 해당 옵션의 매뉴얼 페이지를 확인하는 것이 좋습니다 -no-fsync
. 이를 통해 star
사용 중인 모드만큼 안전하지 않은 모드로 전환할 수 있습니다 gtar
.