재귀 적으로 트리의 각 폴더 안에 해시 파일 (sha512sum)을 만드는 방법은 무엇입니까?


1

주어진 트리의 경우, / var / ftpd라고하면 트리의 각 폴더에 해당 트리의 내용과 함께 해시 파일을 어떻게 만듭니 까? sha1sum 및 sha512sum에는 재귀 옵션이 없습니다.

답변:


1

해결책은 FWIW입니다.

user@host bin]$ cat mkshaindir 
#!/bin/dash
cd $1
sha512sum * >.sha512sum

[user@host bin]$ find /var/ftpd -type d -print0 | xargs -0 -i  mkshaindir  {}

mkshaindir은 새로운 폴더 나 최근에 변경된 파일의 해시를 만들 필요가 있기 때문에 제 목적을 위해 별도의 구성 요소입니다.

나머지는 독자를위한 운동으로 남겨 둡니다.

참고 : sha512sum은 파일이 아닌 입력 (디렉토리, 블록 파일 등)에 대해 STDERR에 불만을 제기합니다.


+1, 일부 세부 사항은 좋을 수도 있지만. (예 : '흥미로운'파일 이름을 해결하기 위해 -print0 xargs-0을 사용하고, -type d를 사용하여 찾기에서 지시문 만 선택)
Hennes

Dennens에게 사과 한 Hennes는 구글이 없습니까? 맨 페이지가 없습니까?
Chris

네. 또한 그것을 모두 알고있는 도둑질하는 배심원. 그래도 우리가 조금 더 덧붙이면 사람들이 읽는 것이 가장 간단합니다.
Hennes

사람들은이 사이트에서 해결책이나 영감을 얻습니다. 해결책을 모색하는 사람들은 잘라 내기 및 붙여 넣기 방법 및 방법을 묻지 않을 것입니다. 영감을 구하는 사람들은 나 자신과 마찬가지로 man 페이지와 google을 읽습니다. 전자는 토론에 관심이 없으며, 후자는 자신의 연구를 통해 "이해"하지 못한다면 읽을 수 있습니다.
Chris

0

해시 파일을 저장하면 해시가 무효화되므로 스크립트는 해시 파일 자체를 계산에 포함하지 않아야합니다.
게다가, 나는 find -exec 자원을 절약하기 위해 :

find /var/ftpd -type d -print0 ! -name .sha512sum -exec mkshaindir {} \;

숨겨진 파일이 발견되면 귀하의 진술은 사실입니다 (일명 도트 파일 [예 : 프로파일]). 해시 값을 저장하기 위해 도트 파일을 사용하는 이유를 들으십시오. 한 행에 오류가있어 해시 파일이 무효화되지 않습니다. sha512sum -c hashfile은 하나의 파일에 오류가있어 전체 파일이 유효하지 않다고보고합니다. 과정에 익숙한 사람은 닭고기 / 달걀 문제이며 적용되지 않는 파일에서 실패한 한 줄을 무시한다는 것을 이해할 수 있습니다.
Chris

변경된 파일에 대한 하위 트리를 확인하는 좀 더 일반적인 경우를 생각했습니다. 따라서 원칙적으로 도트 파일을 제외시키지 않고 두 번째로 스크립트로 하위 트리를 검사하고 종료 값 (하위 트리에서 변경된 단일 파일이 아닌 한 파일 변경됨)을 반환합니다. 그래서 나는 .sha512sum 체크섬을 만들 때 또는 체크섬 파일을 확인할 때. 그러나 귀하의 유스 케이스에 대해서는 일반성이 중요하지 않다는 것에 동의합니다.
user1016274
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.