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. Thanks in advance! David -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.centos.org/pipermail/centos/attachments/20081023/2022322b/attachment-0003.html>
On Thu, Oct 23, 2008 at 11:53:20AM +0200, David Hl??ik 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. > > Thanks in advance!I use this bash function: dirdiff () { local src="$1" dst; dst="${2:-.}"; if [ -z "$src" ]; then err "missing original directory"; return 1; fi; if ! [ -d "$src" ]; then err "$src: not a directory"; return 1; fi; if ! [ -d "$dst" ]; then err "$dst: not a directory"; return 1; fi; diff -u <(cd "$src" && find . | LC_ALL=C sort | sed -e 's/^..//') <(cd "$dst" && find . | LC_ALL=C sort | sed -e 's/^..//') } -- lfr 0/0 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: not available URL: <http://lists.centos.org/pipermail/centos/attachments/20081023/71047985/attachment-0003.sig>
David Hl??ik 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 2Can you use rsync with the -n switch (dryrun) to mirror from mirror 1 to mirror 2 and see what would be transferred? Mogens -- Mogens Kjaer, Carlsberg A/S, Computer Department Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark Phone: +45 33 27 53 25, Mobile: +45 22 12 53 25 Email: mk at crc.dk Homepage: http://www.crc.dk
David Hl?c(ik 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.You can run diff with the two files, but why not just use rsync to fix it in a single step? To compare directories with rsync, cd into one of them and: rsync -avn . /target/path The -n option says to not actually copy files, but with the -v option this will list the files that are missing or different. Because the -a option also sets the owner and modes, this may list files where those are the only differences. Omit the -n option to make the changes. The target path may be on a different host if you use the form user at host:/path/to/target. With older versions of rsync you might have to add -essh to the arguments but that is the default now. If you would like any extra files in the target copy to be deleted, you can add the --delete option, but be sure you know what you are doing first. -- Les Mikesell lesmikesell at gmail.com
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 -- Bowie
On Thu, 2008-10-23 at 11:53 +0200, David Hl??ik 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.diff --brief --recursive /dir1 /dir2 &> /tmp/dir1vsdir2 # good enough? $ mkdir dir1 dir2 $ mkdir dir1/{a,b,c,d} dir2/{b,d} $ diff --recursive --brief dir1 dir2 Only in dir1: a Only in dir1: c $> > Thanks in advance! > > David > <snip sig stuff>HTH -- Bill