cp command help


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers cp command help
# 1  
Old 12-16-2008
cp command help

Hey guys I'm trying to put a script together that will find files older than 30 days and move them to a backup location. Once moved I would like the files deleted from the "prior" directory. I also have it set to email me the status of if the files moved or no. I'm definately not a programmer of any sorts but below was the command I'm using. I put this together from reading some forums on here.

cp -r -p `find /edi/aiprod/report -mtime +30` /edilogs/aiprodreport
ERRCODE=`echo $?`
if [ $ERRCODE != 0 ] ; then
echo "Failed" | mailx -s "EDI Report Maintenance" xxxxxx@xxxxx.com
exit
else
echo "Successful" | mailx -s "EDI Report Maintenance" xxxxxx@xxxxx.com

rm -r `find /edi/aiprod/report -mtime +30`
fi


The problem I'm having with this is that when the script runs it doesnt keep the same directory structure. It seems like any file in a sub directory does not get copied over. Also the files that get copied over are put into the main directory it won't creat the sub directory the file was copied from. Does anyone have any suggestions on a better approach?

For ex.
/edi/aiprod/CATERPILLAR/20081216.850.doc

would be copied to

/edilogs/aiprodreport/20081216.850.doc

Hopefully I made some sense of this. Any help would be much appreciated thanks a ton guys!
# 2  
Old 12-16-2008
I think a better tool for the job is rsync.

rsync --files-from=<(find /../src -mtime +30 -print) src/ dest/

there are also rsync files to delete afterwards.
# 3  
Old 12-16-2008
You can also use tar -c | tar -x to preserve directory structure
# 4  
Old 12-17-2008
Prophyt,

I am not sure whether you found out the solution. Can you try the following and let me know if it helps.

find `/edi/aiprod/report` -mtime +30 -exec cp -b --parents {} /edilogs/aiprodreport/ \;
ERRCODE=`echo $?`
if [ $ERRCODE != 0 ] ; then
echo "Failed" | mailx -s "EDI Report Maintenance" xxxxxx@xxxxx.com
exit
else
echo "Successful" | mailx -s "EDI Report Maintenance" xxxxxx@xxxxx.com
rm -r `find /edi/aiprod/report -mtime +30`
fi
# 5  
Old 12-17-2008
Hey Tiger,

When typing in the command you provided I got the following error.

ksh: /edi/aiprod/report: cannot execute
Usage: find path-list [predicate-list]

Now as I said before I'm a beginner to UNIX as well as using commands. So I could be entering it in wrong. But I entered in the command exactly how it was from what you provided.
# 6  
Old 12-17-2008
If your find brings the files you want, leave the cp out and pipe it into cpio:

Code:
find .... | cpio -dumpv /somenewdir/for/backup

It will create the directory structure based on the found files too.
# 7  
Old 12-17-2008
Zaxxon thanks for the reply this worked. But is there a way to only copy the directory structure for just the directory containing the files I want to copy?

(EX. Using the method you gave)
/edi/aiprod/reports/DSSI/filename
/edi/aiprod/reports/MICHELIN/filename
/edi/aiprod/reports/CATERPILLAR/filename

/edilogs/aiprodreport/edi/aiprod/reports/DSSI/filename
/edilogs/aiprodreport/edi/aiprod/reports/MICHELIN/filename
/edilogs/aiprodreport/edi/aiprod/reports/CATERPILLAR/filename

Basically I would like to remove /edi/aiprod/reports and have it copied so /edilogs/aiprodreport/DSSI/filename
/edilogs/aiprodreport/MICHELIN/filename
/edilogs/aiprodreport/CATERPILLAR/filename
would be the end result of the copy. Hopefully that makes sense? I do EDI (Electronic Data Interchange) mapping and the software I use I specificy the output directory. Was thinking the simpilar I make the directory strucutre the easier it would be on me. But again thak you for your suggestion because it work good.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Another one line command where I'd like to determine if Ubuntu or Red Hat when running command

Hello Forum, I'm making very good progress on my report thanks to the very helpful people on this forum. I've been able to successfully create my report for my Red Hat servers. But I do have a few ubuntu servers in the mix and I'd like to capture some data from them when an ssh connection is... (8 Replies)
Discussion started by: greavette
8 Replies

2. AIX

I'm facing problem with rpm command, when running the command and appears this error:

exec(): 0509-036 Cannot load program /usr/opt/freeware/bin/rpm because of the following errors: 0509-022 Cannot load module /opt/freeware/lib/libintl.a(libintl.so.1). 0509-150 Dependent module /opt/freeware/lib/libiconv.a(shr4.o) could not be loaded. 0509-152 Member... (4 Replies)
Discussion started by: Ohmkar
4 Replies

3. Shell Programming and Scripting

Multiple command execution inside awk command during xml parsing

below is the output xml string from some other command and i will be parsing it using awk cat /tmp/alerts.xml <Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Discussion started by: vivek d r
2 Replies

4. Shell Programming and Scripting

SH script, variable built command fails, but works at command line

I am working with a sh script on a solaris 9 zone (sol 10 host) that grabs information to build the configuration command line. the variables Build64, SSLopt, CONFIGopt, and CC are populated in the script. the script includes CC=`which gcc` CONFIGopt=' --prefix=/ --exec-prefix=/usr... (8 Replies)
Discussion started by: oly_r
8 Replies

5. UNIX for Dummies Questions & Answers

passing command output from one command to the next command in cshell

HI Guys, I hope you are well. I am trying to write a script that gets executed every time i open a shell (cshell). I have two questions about that 1) I need to enter these commands $ echo $DISPLAY $ setenv $DISPLAY output_of_echo_$display_command How can i write a... (2 Replies)
Discussion started by: kaaliakahn
2 Replies

6. UNIX for Advanced & Expert Users

unix command : how to insert text at the cursor location via command line?

Hi, Well my title isn't very clear I think. So to understand my goal: I have a script "test1" #!/bin/bash xvkbd -text blabla with xbindkeys, I bind F5 key in order it runs my test1 script So when I press F5, test1 runs. I'm under Emacs/Vi and I press F5 in order to have "blabla" be... (0 Replies)
Discussion started by: xib.be
0 Replies

7. Shell Programming and Scripting

Need help! command working ok when executed in command line, but fails when run inside a script!

Hi everyone, when executing this command in unix: echo "WM7 Fatal Alerts:", $(cat query1.txt) > a.csvIt works fine, but running this command in a shell script gives an error saying that there's a syntax error. here is content of my script: tdbsrvr$ vi hc.sh "hc.sh" 22 lines, 509... (4 Replies)
Discussion started by: 4dirk1
4 Replies

8. AIX

AIX:Command to get netaddress/subnet address command in IPv4/IP6

AIX:Command to get netaddress/subnet address command in IPv4/IP6 Can anybody help us with a command to retrieve netaddress/subnet address command in IPv4/IP6 on aix machine. net/subnet address is in the format 172.16.212.0(signifies all 255 machines in an IPv4 network) (2 Replies)
Discussion started by: rookie8278
2 Replies

9. Shell Programming and Scripting

assign a command line argument and a unix command to awk variables

Hi , I have a piece of code ...wherein I need to assign the following ... 1) A command line argument to a variable e.g origCount=ARGV 2) A unix command to a variable e.g result=`wc -l testFile.txt` in my awk shell script When I do this : print "origCount" origCount --> I get the... (0 Replies)
Discussion started by: sweta_doshi
0 Replies

10. SuSE

inconsistent ls command display at the command prompt & running as a cron job

Sir, I using the following commands in a file (part of a bigger script): #!/bin/bash cd /opt/oracle/bin ls -lt | tail -1 | awk '{print $6}' >> /tmp/ramb.out If I run this from the command prompt the result is: 2007-05-16 if I run it as a cron job then... (5 Replies)
Discussion started by: rajranibl
5 Replies
Login or Register to Ask a Question