#!/bin/sh
Tmp=/tmp/$$.$(basename $0)
Stage="$(cd $1; pwd)"
Image="$(cd $2; pwd)"
Root="$3"
Site="$4"
User="$5"
Password="$6"
D1=$(echo $(dirname $Stage) | sed 's/\//\\\//g')
D2=$(echo $(dirname $Image) | sed 's/\//\\\//g')
F1=$(basename $Stage)
F2=$(basename $Image)
#
Remove_File() {
#echo "# rm $Image/$1"
echo "cd $Root/$(dirname $1)"
echo "del $(basename $1)"
}
Remove_Dir() {
#echo "# rmdir $Image/$1"
echo "cd $Root/$(dirname $1)"
echo "rmdir $(basename $1)"
}
Create_Dir() {
#echo "# mkdir $Image/$1"
echo "cd $Root/$(dirname $1)"
echo "mkdir $(basename $1)"
}
Copy_File() {
#echo "# cp $Stage/$1 $Image/$1"
echo "lcd $(dirname $Stage/$1)"
echo "cd $Root/$(dirname $1)"
echo "put $(basename $1)"
}
#
Recursively_Remove_Dir() {
# echo "=== in Recursively_Remove_Dir $1 ==="
cd $Image/$1
for f in $(ls); do
if [ -d $f ]; then
Recursively_Remove_Dir $1/$f
cd $Image/$1
else
Remove_File $1/$f
cd $Image/$1
fi
done
Remove_Dir $1
}
Recursively_Copy_Dir() {
# echo "=== in Recursively_Copy_Dir $1 ==="
Create_Dir $1
cd $Stage/$1
for f in $(ls); do
if [ -d $f ]; then
Create_Dir $1/$f
cd $Stage/$1
Recursively_Copy_Dir $1/$f
cd $Stage/$1
else
Copy_File $1/$f
cd $Stage/$1
fi
done
}
#
Change () {
# Called when a simple file (not a directory) is different
Copy_File $1
}
Copy () {
# Called when a file (simple file or directory) exists in Stage
# and not in Image (thus has to be created there by copying it)
if [ -d $Stage/$1 ]; then
Recursively_Copy_Dir $1
else
Copy_File $1
fi
}
Remove () {
# Called when a file (simple file or directory) doesn't exist in Stage
# but exists in Image (thus has to be removed from Image)
if [ -d $Image/$1 ]; then
Recursively_Remove_Dir $1
else
Remove_File $1
fi
}
#
diff -rq "$Stage" "$Image" | \
grep -v '.DS_Store' | \
sed -e "s/ $D1\// /" -e "s/ $D2\// /" \
-e "s/^Files $F1\/\([^ ]*\) and $F2\/\([^ ]*\) differ$/Change \1/" \
-e "s/^Only in $F1\/\([^ ]*\): \(.*\)$/Copy \1\/\2/" \
-e "s/^Only in $F2\/\([^ ]*\): \(.\)$/Remove \1\/\2/" \
-e "s/^Only in $F1: \(.*\)$/Copy \1/" \
-e "s/^Only in $F2: \(.*\)$/Remove \1/" \
> $Tmp
#echo '====================================='
#cat $Tmp
#echo '====================================='
echo "open $Site"
echo "user $User $Password"
echo "bin"
. $Tmp
rm $Tmp
echo "bye"
#
Cette page modifiée le 2002-11-20 à 22:09 est pointée par la page :