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
업무용으로 사용하겠습니다.