나는 다음과 같은 디렉토리 구조를 가지고 있습니다
Code
├── cse701.tgz
└── cse701
├── cse701.md
├── CSE701.md
├── CSE701_pandoc.md
├── cse701.pdf
├── cse.pdf
├── default.yaml
├── html2tex.log
├── test.md
└── missing.md
그리고 타르볼은 다음과 같은 구조를 가지고 있습니다:
drwxrwxr-x zenith/zenith 0 2020-12-02 20:18 cse701/
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/default.yaml
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/CSE701.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/CSE701_pandoc.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/html2tex.log
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/test.md
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse701.pdf
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse.pdf
-rw-rw-r-- zenith/zenith 0 2020-12-02 21:19 cse701/cse701.md
tar --diff -zf cse701.tgz cse701/
tar --compare -zf cse701.tgz ./cse701/
diff 및 비교 옵션은 다음과 같습니다.이 게시물tarball에 없는 디스크에서 누락된 파일이 있음을 지적해야 합니다.
그러나, 그그누 타르 문서파일이 수정되었는지 표시하지만 아카이브에 해당 멤버가 없는 파일 시스템의 파일은 무시합니다. 파일이 아카이브에 표시되지만 파일 시스템에 존재하지 않는 경우 tar는 차이점을 보고합니다.
그렇다면 타르볼을 생성한 후 폴더에 새 파일이 추가되었는지 어떻게 알 수 있습니까?
답변1
이것은 한 줄짜리가 아니지만 원하는 작업을 수행합니다.
cd /path/to/Code
tar -tf cse701.tgz | sed 's#/$##' >tgz
find cse701 >fs
diff -uw fs tgz
rm fs
rm tgz
설명:
- 먼저 관련 디렉토리로 변경합니다.
- 그런 다음 tar.gz 콘텐츠를 나열하고
/
줄 끝에서 es를 제거합니다(tar -t
디렉토리에 해당 항목을 넣습니다). - 그런 다음 해당 파일 시스템 하위 트리에서 모든 파일과 디렉터리를 찾습니다(
find
puts아니요/
마지막에 있어요) - 우리는 그 두 목록을 비교합니다
- 그리고 청소하다