也有一个类似的问题:使用unix
在远程服务器上的两个目录中比较文件但是我的情况是我无法登录远程服务器,它是客户机器,因此无法使用Rsync,但是我可以要求客户导出目录结构,告诉我DIR/FILE的名称,大小,MD5值等。
我只想显示不同内容中的文件名。
如何做?最好使用ksh ...
预先感谢。
这取决于文件日期和时间是否重要或文件内容...
如果日期很重要(例如,您正在调查的同步内容),我将与find
一起运行CC_1。
如果内容很重要,我想检查这样的MD5校验和。
find . -type f -print -exec md5 -q {} ; > somefile
提供这样的输出:
./West Wales 14-Oct-09.axe
2c0c390bfc4206b8b88e11d537eacda8
./wl
44f84a91a98da15381a198e29417170c
./YOURFILE
ea102bc16e2b449e4ac6770b73cb9c50
./YOURFILE.BAK
a6ba1946cb666cb3b88ac31e6fb3f3f0
./z.html
b4554a1044abe07fd23d4580dd3055cc
然后在本地计算机上,读取文件并在本地计算其校验和与遥控器进行比较:
#!/bin/bash
while read fname
do
read remotemd5
localmd5=$(md5 -q "$fname")
if [ $remotemd5 != $localmd5 ]; then
echo $fname $localmd5 $remotemd5
fi
done < file
要求客户运行命令以获取所有相关信息,例如:
find . -type f -exec ls -l {} ; | sort > remote_dir.txt
然后在本地运行相同的命令:
find . -type f -exec ls -l {} ; | sort > local_dir.txt
然后,您可以使用COMM比较两者并查看发生了什么变化。
comm -3 remote_dir.txt local_dir.txt