찾기 + Grep 재귀 검색

찾기 + Grep 재귀 검색

wget을 사용하여 웹사이트를 미러링하고 있습니다. 서버에는 find /다음 형식의 파일 이름을 포함하는 명령 덤프가 있습니다 .

/dir1/ /dir1/page1.txt /dir1/page2.txt ...

미러 링은 매우 크며(100GB 이상) find로컬 출력을 서버 측 덤프가 포함된 텍스트 파일과 비교하여 남은 파일 수를 확인하고 싶습니다.

grep -v ...or 을 사용하려고 하는데 awk어떻게 해야 할지 잘 모르겠습니다.

누구든지 나를 도와줄 수 있나요?

감사해요!

답변1

다음과 같은 방법으로 이를 수행할 수 있습니다 comm(프로세스 대체 사용 ).bash

comm -13 <(find / | sort) <(sort server_dump)

그러면 서버별 파일이 표시됩니다. 로컬 시스템별 파일의 경우:

comm -23 <(find / | sort) <(sort server_dump)

-xdev같은 다른 파일 시스템의 파일을 비교하지 못하도록 찾기 옵션을 추가할 수도 있습니다 ./proc/sys

답변2

wget's재귀 다운로드 옵션을 사용할 필요는 없다고 생각합니다 .이미다운로드해야 하는 파일 목록은 다음과 같습니다.

wget --input-file=./path/to/your/list --base=URL

이렇게 하면 목록을 먼저 따라갈 수 있으므로 다운로드하는 모든 파일이 목록의 다음 파일이 됩니다. 따라서 마지막으로 다운로드한 파일과 목록에서의 해당 위치를 확인하여 언제든지 진행 상황을 확인할 수 있습니다.

하지만 이것이 작동하지 않는다면:

{ find . ; sed 's/.*/.&/' list.file ; } | 
    sort | uniq -u

답변3

find두 호스트의 파일에 출력을 덤프한 다음 diff두 파일 모두에 대해 작업을 수행하면 어떨까요 ? 파일 수를 얻으려면 count 를 사용할 수 있습니다 wc.

답변4

서버에 SSH 액세스 권한이 있는지 여부는 질문에서 명확하지 않습니다. 있다면 그냥 rsync업무용으로 사용하겠습니다.

관련 정보