David Hlácik wrote:
Hello guys,
I have two mirrors. I need to compare files and directories on both mirrors and as a result print list of those which are missing on mirror 2
What i did
find /data > find.mirror1
find /data > find.mirror2
Now i need to get list of those directories which are missing in mirror1.
find /data | sort > find.mirror1
find /data | sort > find.mirror2
diff find.mirror1 find.mirror2
On Thu, Oct 23, 2008, Bowie Bailey wrote:
David Hlácik wrote:
Hello guys,
I have two mirrors. I need to compare files and directories on both mirrors and as a result print list of those which are missing on mirror 2
What i did
find /data > find.mirror1
find /data > find.mirror2
Now i need to get list of those directories which are missing in mirror1.
find /data | sort > find.mirror1
find /data | sort > find.mirror2
diff find.mirror1 find.mirror2
A somewhat cleaner way of doing this is to use the ``comm'' command as it generates a straight list as opposed to diff which requires parsing the output.
cd /dir1 find . | sort > /tmp/find.mirror1 cd /dir2 find . | sort > /tmp/find.mirror2
# This will give a list of lines in mirror2 not in mirror1 comm -13 /tmp/find.mirror1 /tmp/find.mirror2 > /tmp/missingfrom1
# This will give a list of files in mirror1 not in mirror2 comm -23 /tmp/find.mirror1 /tmp/find.mirror2 > /tmp/missingfrom2
Bill
On Thu, Oct 23, 2008 at 10:15 AM, Bill Campbell centos@celestial.com wrote:
A somewhat cleaner way of doing this is to use the ``comm'' command as it generates a straight list as opposed to diff which requires parsing the output.
But comm also "requires" that the data be sorted. Otherwise you can get spurious output because lines that are actually the same but do not appear in order will show up as differences.
I'd go with the rsync solutions already posted, but that's just me.
mhr
On Thu, Oct 23, 2008, MHR wrote:
On Thu, Oct 23, 2008 at 10:15 AM, Bill Campbell centos@celestial.com wrote:
A somewhat cleaner way of doing this is to use the ``comm'' command as it generates a straight list as opposed to diff which requires parsing the output.
But comm also "requires" that the data be sorted. Otherwise you can get spurious output because lines that are actually the same but do not appear in order will show up as differences.
That's certainly true, which is why my solution, and the one with diff both sorted the find output before the comparison.
I use the ``comm'' solution quite frequently for this, and to do things like compare ``rpm -ql packagename'' with ``rpm -qpl'' to be sure that modifications I have made to a package have not added or lost something compared to the installed version.
I find ``comm'' to be a very useful program that people may not know of, and I use it in Linux/Unix classes I teach to show people how CLI programs may make things much easier than GUIs.
I'd go with the rsync solutions already posted, but that's just me.
Bill
On Thu, Oct 23, 2008 at 11:13 AM, Bill Campbell centos@celestial.com wrote:
That's certainly true, which is why my solution, and the one with diff both sorted the find output before the comparison.
Oh, I thought I was just seeing double again.
Oops! :-)
mhr