我已经把一个网站从一个服务器移到另一个服务器上,我使用SCP复制了这些文件
我现在希望检查所有的文件已被复制OK。
我如何比较网站?
计算文件夹的文件?
获取文件夹树的总文件大小?
还是有更好的方法来比较网站?
保罗
如果您使用的是scp,那么您可能已经使用了rsync 。
rsync不会传输已经是最新的文件,所以你可以通过再次运行rsync来使用它来验证拷贝是最新的。
如果你在旧主机上做这样的事情:
scp -r from/my/dir newhost:/to/new/dir
那么你可以做类似的事情
rsync -a --progress from/my/dir newhost:/to/new/dir
'-a'是'归档'的简称,它是递归拷贝并保留权限,所有权等。检查手册页获取更多信息,因为它可以做很多聪明的事情。
使用diff与递归-r
和快速-q
选项。 这是最好的,也是迄今为止最快的方法。
diff -r -q /path/to/dir1 /path/to/dir2
它不会告诉你有什么区别(删除-q选项来看),但它会很快告诉你,如果所有的文件是相同的。
如果没有输出,所有的文件都是一样的,否则会列出不同的文件。
cd website find . -type f -print | sort | xargs sha1sum
将产生文件的校验和列表。 然后,您可以区分这些文件,看是否有任何缺失/添加/不同的文件。
也许你可以使用类似这样的东西:
find <original root dir> | xargs md5sum > original find <new root dir> | xargs md5sum > new diff original new
如果你使用scp,你可能也可以通过ssh使用rsync。
rsync -avH --delete-after 1.example.com:/path/to/your/dir 2.example.com:/path/to/your/
rsync会为你做校验和。
确保使用-n选项执行干运行。 检查手册页面。
我更喜欢rsync甚至本地cp,每次我可以使用它。
如果rsync不是一个选项,md5sum可以生成md5摘要,md5sumc –check将检查它们。
为所有文件进行校验和,例如使用md5sum 。 如果它们对于所有文件都是一样的,并且没有文件丢失,那么一切正常。
尝试递归地分配你的目录。 如果某个目录中的内容有所不同,则会得到一个很好的摘要。
我已经从一个服务器移动到另一个网站,我使用SCP复制文件
你可以用rsync来做到这一点,如果你只是想反射一些东西,那就太好了。
/约翰
更新:似乎@rjack打了我的rsync与6秒的答案:-)
我会把这个添加到Douglas Leeder或Eineki,但可悲的是,没有足够的评价来评价。 无论如何,他们的答案都很好,除了他们不适用于带空格的文件名。 做这个工作,做
find [dir1] -type f -print0 | xargs -0 [preferred hash function] > [file1] find [dir2] -type f -print0 | xargs -0 [preferred hash function] > [file2] diff -y [file1] [file2]
只是从实验中,我也喜欢在diff上使用-W ### arguement,并将其输出到一个文件中,在终端中更容易解析和理解。
添加Sidney的回复。 过滤掉f类型并生成散列码并不是非常必要。 在答复zidarsk8时,您不需要排序,因为find和ls相同,默认情况下按字母顺序排列文件名。 它也适用于空目录。
总而言之,前三个最佳答案是:(PS很高兴用rsync进行干运行)
diff -r -q /path/to/dir1 /path/to/dir2 diff <(cd dir1 && find) <(cd dir2 && find) rsync --dry-run -avh from/my/dir newhost:/to/new/dir