From a68f492fcc6150e51b6e704b2307c9f3a1567e28 Mon Sep 17 00:00:00 2001 From: Manuel Tortosa Date: Sun, 5 Sep 2010 21:44:04 +0200 Subject: [PATCH] New sync-complete.sh for avoid uploading removed files --- check-files.sh | 114 +++++++++++++++++++++++++++++++++++++++++++++++ sync-complete.sh | 67 ++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100755 check-files.sh diff --git a/check-files.sh b/check-files.sh new file mode 100755 index 000000000..a97f5445f --- /dev/null +++ b/check-files.sh @@ -0,0 +1,114 @@ +#!/bin/bash + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see + +# +# setup +# +_script_name="Check files" +_build_arch="$_arch" +_cur_repo=`pwd | awk -F '/' '{print $NF}'` +_needed_functions="config_handling helpers messages" +# load functions +for subroutine in ${_needed_functions} +do + source _buildscripts/functions/${subroutine} +done + +# +# startup +# +title "${_script_name} - $_cur_repo" + +check_configs +load_configs + +check_rsync +check_accounts + +question() { + local mesg=$1; shift + echo -e -n "\033[1;32m::\033[1;0m\033[1;0m ${mesg}\033[1;0m" +} + +sync_down() +{ + title2 "syncing down" + export RSYNC_PASSWORD=`echo $_rsync_pass` + rsync -avh --progress $_rsync_user@$_rsync_server::$_rsync_dir/* _repo/remote/ +} + +remove_packages() +{ + # remove the package(s) from _repo/remote + title2 "removing the packages(s) from _repo/remote" + pushd _repo/remote &>/dev/null + rm -rf $remove_list + popd &>/dev/null +} + +sync_down +export RSYNC_PASSWORD=`echo $_rsync_pass` + +# Get the file list in the server +repo_files=`rsync -avh --list-only $_rsync_user@$_rsync_server::$_rsync_dir/* | cut -d ":" -f 3 | cut -d " " -f 2` + +# Get the file list in _repo/remote +local_files=`ls -a _repo/remote/* | cut -d "/" -f 3` + + +remove_list="" +for parse_file in $local_files +do + file_exist="false" + for compare_file in $repo_files + do + if [ "$parse_file" = "$compare_file" ] ; then + file_exist="true" + fi + done + if [ "$file_exist" = "false" ] ; then + remove_list="$remove_list $parse_file" + fi +done + +if [ "$remove_list" != "" ] ; then + title2 "The following packages in _repo/remote don't exist in the sever:" + newline + echo "$remove_list" + newline + question "Do you want to remove the package(s)? (y/n)" + while true; do + read yn + case $yn in + y* | Y* ) + newline ; + remove_packages; + break + ;; + [nN]* ) + newline ; + title "The files will be keeped..." ; + newline ; + break + ;; + * ) + echo "Enter yes or no" + ;; + esac + done +fi + +title "All done" +newline diff --git a/sync-complete.sh b/sync-complete.sh index efa263026..5ab3d1c08 100755 --- a/sync-complete.sh +++ b/sync-complete.sh @@ -26,14 +26,81 @@ do source _buildscripts/functions/${subroutine} done +question() { + local mesg=$1; shift + echo -e -n "\033[1;32m::\033[1;0m\033[1;0m ${mesg}\033[1;0m" +} + # # main # + +remove_packages() +{ + # remove the package(s) from _repo/remote + title2 "removing the packages(s) from _repo/remote" + pushd _repo/remote &>/dev/null + rm -rf $remove_list + popd &>/dev/null +} + +check_files() +{ + export RSYNC_PASSWORD=`echo $_rsync_pass` + # Get the file list in the server + repo_files=`rsync -avh --list-only $_rsync_user@$_rsync_server::$_rsync_dir/* | cut -d ":" -f 3 | cut -d " " -f 2` + # Get the file list in _repo/remote + local_files=`ls -a _repo/remote/* | cut -d "/" -f 3` + remove_list="" + for parse_file in $local_files + do + file_exist="false" + for compare_file in $repo_files + do + if [ "$parse_file" = "$compare_file" ] ; then + file_exist="true" + fi + done + if [ "$file_exist" = "false" ] ; then + remove_list="$remove_list $parse_file" + fi + done + if [ "$remove_list" != "" ] ; then + title2 "The following packages in _repo/remote don't exist in the sever:" + newline + echo "$remove_list" + newline + question "Do you want to remove the package(s)? (y/n)" + while true; do + read yn + case $yn in + y* | Y* ) + newline ; + remove_packages; + break + ;; + [nN]* ) + newline ; + title "The files will be keeped..." ; + newline ; + break + ;; + * ) + echo "Enter yes or no" + ;; + esac + done + fi +} + sync_complete() { title2 "syncing down" export RSYNC_PASSWORD=`echo $_rsync_pass` rsync -avh --progress $_rsync_user@$_rsync_server::$_rsync_dir/* _repo/remote/ + + title2 "Searching removed files" + check_files # move new packages from $ROOT/repos/$REPO/build into thr repo dir title2 "adding new packages"