find and coy
Hello all,
I have a script that runs on different servers that does a daily dump of each database. I would like to also copy each system's file to the same NFS mounted system so that I have a local and a remote copy from each system. Obviously I don't need to copy yesterday's dump again, so I am trying to find the recent file and copy only it. I have no problem developing that find command, but I want to rename the copy in the process by pre-pending the file name with the hostname so I can differentiate between dumps from different servers. I don't want bother with having to implement a destination directory structure since new systems may come and go. So I am trying to see how this works by echoing the find output, and I can see what the problem is but I don't know how to get around it. find's {} place holder is expanding to ./<filename> and I need just <filename>
The command I am testing with is:
find /var/lib/postgresql/9.1/backup -mmin -60 -a -iname '*.sql' -execdir echo "/var/data.backup/`hostname`.{}" ';'
which outputs:
/var/data.backup/prod1../dump_08-31-13.sql
but I want it to output:
/var/data.backup/prod1.dump_08-31-13.sql
My final command will be a copy command similar to:
find /var/lib/postgresql/9.1/backup -mmin -60 -a -iname '*.sql' -execdir cp '{}' /var/data.backup/`hostname`.'{}' ';'
but I need to understand how to strip the leading ./ from the filename returned by find. Anyone have a suggestion?
Thanks,
Craig
Sent - Gtek Web Mail
Reply to: