Solved

unix cp command

Posted on 2011-09-20
13
619 Views
Last Modified: 2012-06-22
could I use the cp command to copy recursively a directory to another directory, and over-write what is in the destination directory, so something like

cp -R /source /destination

0
Comment
Question by:JeffBeall
  • 5
  • 4
  • 2
  • +2
13 Comments
 
LVL 21

Expert Comment

by:Papertrip
ID: 36570854
If you want to copy the contents of /source, then just add a * at the end
cp -R /source/* /destination

Open in new window

Without it, the /source directory will be copied into /destination as a subdirectory of it.
0
 
LVL 16

Expert Comment

by:Joseph Gan
ID: 36570865
Also can add "-p" to preserve ownerid, group id and permission etc.
0
 
LVL 1

Author Comment

by:JeffBeall
ID: 36570868
so i don't need to do anything special to over write the destination?
i ask because i already ran

cp -R /source /destination

a little while ago
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 21

Expert Comment

by:Papertrip
ID: 36570879
No you don't need anything special.

If you ran that command exactly how you typed it, then you will end up with '/destination/source/'
0
 
LVL 16

Accepted Solution

by:
Joseph Gan earned 125 total points
ID: 36570888
Correct, it will over write everythings in destination directory without asking.
0
 
LVL 1

Author Comment

by:JeffBeall
ID: 36570889
ok, i'll try it.
0
 
LVL 3

Assisted Solution

by:RitBit
RitBit earned 125 total points
ID: 36572990
To force overwriting and keep permissions for a recursive copy try this:

cp -Rpf <SOURCE>  <DESTINATION>

R -> Recursive
p -> keep permissions
f -> force overwrite all
0
 
LVL 19

Assisted Solution

by:xterm
xterm earned 125 total points
ID: 36574274
No iteration of cp will "merge" the two recursively - the source will always end up inside the destination directory, and I don't think that is what you want.

If you would like the entire contents of foo/*/* to end up IN bar/*/* then do this:

(cd /foo && tar cpf - . ) | (cd /bar && tar xvfp -)
0
 
LVL 1

Author Comment

by:JeffBeall
ID: 36574688
i don't really need to merge directories. overwriting in this case is fine, so will RitBit's solution work?
0
 
LVL 21

Expert Comment

by:Papertrip
ID: 36574724
The first answer I gave is sufficient for what you said you need to do, did you try it?
0
 
LVL 1

Author Comment

by:JeffBeall
ID: 36575683
i did try it, but everything from the source directory ended up not in the destination directory that i wanted, and i ran out of space on my external drive. so in my setup i did this

cp -R /DELTAR /t4mbu

however, maybe i should have done

cp -R /DELTAR /t4mbu/DELTAR

since i ran out of disk space , i thought maybe the command doesn't over right the destination, of course now that i think of it, it didn't have anything to over right, since all the files were in
/t4mbu/DELTAR and not /t4mbu
0
 
LVL 21

Assisted Solution

by:Papertrip
Papertrip earned 125 total points
ID: 36575717
cp -R /DELTAR /t4mbu
since all the files were in/t4mbu/DELTAR and not /t4mbu

If you followed my instructions, then the contents of /DELTAR would be under /t4mbu, instead of /t4mbu/DELTAR


If you want to copy the contents of /source, then just add a * at the end
cp -R /source/* /destination

Open in new window

Without it, the /source directory will be copied into /destination as a subdirectory of it.
0
 
LVL 1

Author Closing Comment

by:JeffBeall
ID: 36587159
thanks for the help.
0

Featured Post

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
networking details on centos 6.6 4 61
Fetching data from Multiple Linux Server using Shell Scripting 55 134
Martian Packets Unix 5 50
android secure ftp 3 32
Using 'screen' for session sharing, The Simple Edition Step 1: user starts session with command: screen Step 2: other user (logged in with same user account) connects with command: screen -x Done. Both users are connected to the same CLI sessio…
Setting up Secure Ubuntu server on VMware 1.      Insert the Ubuntu Server distribution CD or attach the ISO of the CD which is in the “Datastore”. Note that it is important to install the x64 edition on servers, not the X86 editions. 2.      Power on th…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now