Найти рекурсивный поиск Grep

Я зеркалирую веб-сайт с помощью wget. На сервере есть дамп find / command, который включает имена файлов в форме:

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

Зеркалирование очень велико (100 ГБ +), и я хотел бы сравнить локальный вывод find с текстовым файлом, содержащим дамп на стороне сервера, чтобы иметь представление о том, сколько файлов осталось.

Я думал использовать grep -v ... или awk но я не совсем уверен, как это можно было бы сделать.

Кто-нибудь может мне помочь?

Благодаря !

Вы можете сделать это с помощью comm (с использованием замены bash ):

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

Это покажет файлы, которые уникальны для сервера. Для файлов, которые являются уникальными для локальной системы:

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

Вы также можете добавить опцию -xdev чтобы найти, чтобы остановить ее от сравнения файлов на других файловых системах, таких как /proc и /sys .

Я не думаю, что вам нужно использовать рекурсивные параметры загрузки wget's потому что у вас уже есть список файлов, требующих загрузки:

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

Таким образом, вы просто должны следовать за списком в первую очередь, и поэтому каждый загруженный файл будет только следующим в списке. Таким образом, вы всегда можете найти свой прогресс, просто проверив последний загруженный файл и его позицию в списке.

Но если это не работает:

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

Почему бы просто не вывести вывод find в файл, на оба узла, а затем выполнить diff для двух файлов? Чтобы получить количество файлов, вы можете рассчитывать с помощью wc .

Неясно, существует ли доступ к SSH-доступу к серверу. Если есть, я бы просто использовал rsync для задания.