Find + Grep 递归搜索

Find + Grep 递归搜索

我正在使用 wget 镜像一个网站。服务器上有一个命令的转储find /,其中包括以下形式的文件名:

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

镜像环非常大(100GB+),我想将本地输出与find包含服务器端转储的文本文件进行比较,以便了解还剩下多少文件。

我正在考虑使用grep -v ...orawk但我不太确定如何去做。

有人可以帮我吗?

谢谢 !

答案1

您可以通过以下方式执行此操作comm(使用bash进程替换):

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

这将显示服务器特有的文件。对于本地系统特有的文件:

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

您可能还想添加-xdevfind 选项以阻止它比较其他文件系统上的文件,例如/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对这两个文件执行 a 操作?要获取文件数量,您可以使用 进行计数wc

答案4

从问题中尚不清楚服务器是否可以进行 SSH 访问。如果有的话,我会简单地用于rsync这项工作。

相关内容