--keep-old-files
나는 이미 존재하는 파일을 삭제하지 않도록 tar 파일의 압축을 풀 때 이 옵션을 사용하고 있습니다 . 짜증나게도 이로 인해 파일이 이미 존재하는 경우 tar가 오류 코드 #2(치명적 오류)를 생성하게 됩니다.
내 스크립트는 파일의 압축이 성공적으로 풀렸을 때 로그를 기록한 다음 이 로그를 사용하여 tar 파일의 압축을 다시 풀지 않도록 하기 때문에 이것이 오류로 간주되어서는 안 된다는 것이 나에게 중요합니다.
오류를 완전히 무시하고 기록하지 않고 파일을 덮어쓰지 않을 것이라고 믿을 수 있지만 두 가지 문제가 있습니다. 많은 오류 메시지가 생성되고 파일이 많아 비효율적입니다. 각 파일에 대해 한 번씩 tar를 엽니다.
--keep-old-files
기존 파일에서 생성된 오류는 무시하고 다른 오류는 무시하지 않는 방법이 있습니까 ?
답변1
이것은 분명히 의도적으로 설계된 것입니다.문서:
보다 주의 깊게 기존 파일이 교체되는 것을 방지하려면
--keep-old-files
(-k
) 옵션을 사용하십시오. 이는 tar가 기존 파일을 대체하거나 업데이트하는 것을 거부하게 만듭니다. 즉, 아카이브 구성원과 동일한 이름을 가진 파일은 아카이브 구성원이 추출되는 것을 방지합니다. 대신 오류를 보고합니다.
git 저장소에는 다음이 포함되어 있습니다.수리하다--skip-old-files
이 문제가 향후 GNU 버전에서 해결될 수 있도록 매개변수가 도입되었습니다 tar
.
+A new option --skip-old-files is introduced, which acts exactly as +--keep-old-files, except that it does not treat existing files as +errors. Instead it just silently skips them. An additional level of +verbosity can be obtained by using the option --warning=existing-file +together with this option.
이 패치는 아직 되지 않았습니다.정식 출시그러나 그러나.