#!/bin/bash # FOR hosts with limited disk space - move to storage server function usage { echo -n "Usage: ${0}" echo -n " -H " echo -n " [ -A (default /works/archive)]" echo -n " [-D (default: '2 days ago')]" echo exit 1 } echo Starting $0 $* # ---- D e f a u l t s ArchiveDir=/works/archive DateCriteria="2 days ago" FromHost=$(hostname -s) # ---- D e f a u l t s # ---------------- cmdline while getopts "A:H:D:" opt; do case ${opt} in A ) ArchiveDir=$OPTARG ;; H ) FromHost=$OPTARG ;; D ) DateCriteria=$OPTARG ;; \? ) echo "Invalid option: -$OPTARG" >&2 usage ;; : ) echo "Option -$OPTARG requires an argument." >&2 usage ;; esac done # ---------------- cmdline if [ "${FromHost}" == "" ] then usage fi TargetHost=cloud21.cvtt.vpn TargetRootDir=/opt/store/cvtt/archive Oldest=$(date -d "${DateCriteria}" '+%Y-%m-%d %H:%M:%S') echo "Looking for log files older than ${DateCriteria} in ${ArchiveDir}" Cmd="find ${ArchiveDir}/" Cmd="${Cmd} '('" Cmd="${Cmd} -name '*.log'" Cmd="${Cmd} -o -name '*.log.*'" Cmd="${Cmd} -o -name '*.logs.*'" Cmd="${Cmd} -o -name '*.tgz'" Cmd="${Cmd} ')'" Cmd="${Cmd} -type f" Cmd="${Cmd} -not -newermt \"${Oldest}\"" echo ${Cmd} files=$(eval ${Cmd}) if [ "$files" == "" ] then echo "No files found older than ${Oldest} in ${ArchiveDir}" else Target="${TargetHost}:${TargetRootDir}/${FromHost}/" echo "Moving files to ${Target}:" echo ----------------- for f in ${files} do echo ${f} done Cmd="rsync -ahvv" Cmd="${Cmd} --remove-source-files" Cmd="${Cmd} $files" Cmd="${Cmd} ${Target}" echo ${Cmd} # exit eval ${Cmd} fi echo Done ${0} ${*}