我已将网站从一台服务器移动到另一台服务器,我使用SCP复制文件
我现在想检查所有文件是否已经复制好了。
如何比较网站?
计算文件夹的文件?
获取文件夹树的总文件大小?
或者有更好的方法来比较网站吗?
保
答案 0 :(得分:31)
使用带有递归-r
和快速-q
选项的diff。这是最好的,也是迄今为止最快的方法。
diff -r -q /path/to/dir1 /path/to/dir2
它不会告诉你差异是什么(删除-q选项以查看它),但它会很快告诉你所有文件是否相同。
如果没有显示输出,则所有文件都相同,否则将列出不同的文件。
答案 1 :(得分:10)
如果您使用的是scp,则可能使用了rsync。
rsync不会传输已经更新的文件,因此您可以通过再次运行rsync来验证副本是否是最新的。
如果您在旧主机上做了类似的事情:
scp -r from/my/dir newhost:/to/new/dir
然后你可以做类似
的事情rsync -a --progress from/my/dir newhost:/to/new/dir
'-a'是'archive'的缩写,它执行递归复制并保留权限,所有权等。查看man page以获取更多信息,因为它可以做很多聪明的事情。
答案 2 :(得分:8)
cd website
find . -type f -print | sort | xargs sha1sum
将生成文件的校验和列表。然后,您可以diff
查看是否有任何丢失/添加/不同的文件。
答案 3 :(得分:3)
也许你可以使用类似的东西:
find <original root dir> | xargs md5sum > original
find <new root dir> | xargs md5sum > new
diff original new
答案 4 :(得分:1)
如果你使用scp,你可能也可以在ssh上使用rsync。
rsync -avH --delete-after 1.example.com:/path/to/your/dir 2.example.com:/path/to/your/
rsync为你做校验和。
请务必使用-n选项执行干运行。查看手册页。
我更喜欢rsync而不是scp甚至本地cp,每次我都可以使用它。
如果rsync不是一个选项,md5sum可以生成md5摘要,md5sumc --check会检查它们。
答案 5 :(得分:1)
添加西德尼的回复。 过滤掉-type f并生成哈希码并不是非常必要的。 在回复zidarsk8时,您不需要排序,因为find与ls一样,默认按字母顺序对文件名进行排序。它也适用于空目录。
总结一下,前3个最佳答案是: (P.S.很好用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
答案 6 :(得分:0)
为所有文件制作校验和,例如使用md5sum。如果它们对于所有文件都是相同的并且没有文件丢失,那么一切都没问题。
答案 7 :(得分:0)
递归尝试diffing您的目录。如果其中一个目录中的内容有所不同,您将得到一个很好的摘要。
答案 8 :(得分:0)
我一直在将网站从一台服务器移动到另一台服务器,我使用SCP复制文件
你可以用rsync做到这一点,如果你只是想镜像一些东西,那就太好了。
/约翰
更新:好像@rjack用6秒的rsync答案打败了我: - )
答案 9 :(得分:0)
我会将此添加到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并将其输出到文件中,更容易在终端中解析和理解。