initial commit of bin scripts into git
This commit is contained in:
50
diff_dir
Executable file
50
diff_dir
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
# Compare two directories using rsync and print the differences
|
||||
# CAUTION: options MUST appear after the directories
|
||||
#
|
||||
# SYNTAX
|
||||
#---------
|
||||
# diff-dirs Left_Dir Right_Dir [options]
|
||||
#
|
||||
# EXAMPLE OF OUTPUT
|
||||
#------------------
|
||||
# L file-only-in-Left-dir
|
||||
# R file-only-in-right-dir
|
||||
# X >f.st...... file-with-dif-size-and-time
|
||||
# X .f...p..... file-with-dif-perms
|
||||
#
|
||||
# L / R mean that the file/dir appears only at the `L`eft or `R`ight dir.
|
||||
#
|
||||
# X means that a file appears on both sides but is not the same (in which
|
||||
# case the next 11 characters give you more info. In most cases knowing
|
||||
# that s,t,T and p depict differences in Size, Time and Permissions
|
||||
# is enough but `man rsync` has more info
|
||||
# (look at the --itemize-changes option)
|
||||
#
|
||||
# OPTIONS
|
||||
#---------
|
||||
# All options are passed to rsync. Here are the most useful for the purpose
|
||||
# of directory comparisons:
|
||||
#
|
||||
# -c will force comparison of file contents (otherwise only
|
||||
# time & size is compared which is much faster)
|
||||
#
|
||||
# -p/-o/-g will force comparison of permissions/owner/group
|
||||
|
||||
if [[ -z $2 ]] ; then
|
||||
echo "USAGE: $0 dir1 dir2 [optional rsync arguments]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
LEFT_DIR=$1; shift
|
||||
RIGHT_DIR=$1; shift
|
||||
OPTIONS="$*"
|
||||
|
||||
# Files that don't exist in Right_Dir
|
||||
rsync $OPTIONS -rin --ignore-existing "$LEFT_DIR"/ "$RIGHT_DIR"/|sed -e 's/^[^ ]* /L /'
|
||||
# Files that don't exist in Left_Dir
|
||||
#rsync $OPTIONS -rin --ignore-existing "$RIGHT_DIR"/ "$LEFT_DIR"/|sed -e 's/^[^ ]* /R /'
|
||||
# Files that exist in both dirs but have differences
|
||||
#rsync $OPTIONS -rin --existing "$LEFT_DIR"/ "$RIGHT_DIR"/|sed -e 's/^/X /'
|
||||
Reference in New Issue
Block a user