Variable directory names over SCP

Posted by nedm on Server Fault See other posts from Server Fault or by nedm
Published on 2010-03-15T21:48:54Z Indexed on 2010/03/15 22:00 UTC
Read the original article Hit count: 468

Filed under:
|
|

We have a backup routine that previously ran from one disk to another on the same server, but have recently moved the source data to a remote server and are trying to replicate the job via scp.

We need to run the script on the target server, and we've set up key-based scp (no username/password required) between the two servers. Using scp to copy specific files and directories works perfectly:

scp -r -p -B [email protected]:/mnt/disk1/bsource/filename.txt /mnt/disk2/btarget/

However, our previous routine iterates through directories on the source disk to determine which files to copy, then runs them individually through gpg encryption. Is there any way to do this only by using scp?

Again, this script needs to run from the target server, and the user the job runs under only has scp (no ssh) access to the target system.

The old job would look something like this:

#Change to source dir
cd /mnt/disk1

#Create variable to store 
# directories named by date YYYYMMDD
j="20000101/"

#Iterate though directories in the current dir
# to get the most recent folder name
for i in $(ls -d */);
do
 if [ "$j" \< "$i" ]; then
  j=${i%/*}
 fi
done

#Encrypt individual files from $j to target directory
cd ./${j%%}/bsource/
for k in $(ls -p | grep -v /$);
do
 sudo /usr/bin/gpg -e -r "Backup Key" --batch --no-tty -o "/mnt/disk2/btarget/$k.gpg" "$/mnt/disk1/$j/bsource/$k"
done

Can anyone suggest how to do this via scp from the target system? Thanks in advance.

© Server Fault or respective owner

Related posts about scp

Related posts about bash-scripting