Scenario / Questions
I have Eclipse projects and “.project” file in them, the directory structure looks like ‘
myProject/.project‘. I want to copy these ‘.project’ files to another directory, but I want the enclosing directory name to be preserved.
Let’s say I have ‘
a/myProject/.project‘, I want to copy ‘
myProject/.project‘ to ‘
b‘, so it be ‘
b/myProject/.project‘, but ‘
b/myProject‘ doesn’t exist. When I try in a:
cp -r ./myProject/.project ../b
it copies only ‘.project’ file itself, without ‘myProject’ directory. Please advise.
Find below all possible solutions or suggestions for the above questions..
The switch you need is
jim@prometheus:~$ cp --parents test/1/.moo test2/ jim@prometheus:~$ ls -la test2/ total 42 drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 . drwxr-xr-x 356 jim jim 43136 2010-09-14 09:32 .. drwxr-xr-x 3 jim jim 72 2010-09-14 09:32 test jim@prometheus:~$ ls -la test2/test/1/.moo -rw-r--r-- 1 jim jim 0 2010-09-14 09:32 test2/test/1/.moo
You can also use
rsync -R, which works on OSX where
cp --parents isn’t available.
tar with something like:
mkdir b; tar cpf - myProject/ | tar xpf - -C b/
(Not tested. Give it a dry run first or try in a mockup scenario.)
mkdir -p to create the destination folder with recursive parent path creation. Then copy the contents to the destination folder:
mkdir -p b/myProject/.project cp -r a/myProject/.project/file b/myProject/.project
cp -P a/myProject/.project b
man cp for more information.
I use cpio in combination with find. Explanation here.
Example for your use case:
find /a/myProject/.project/ -type f | cpio -p -dumv /b/.
This command finds all files in
/a/myProject/.project/ and copies, while preserving the path, any files contained within.
--parents it is also required to add
-r option in order to avoid omitting the copy of most inner directory
$ cp --parents test/1/.moo test2/ cp: omitting directory ‘test/1/.moo’
So the command that works for me is
$ cp --parents -r test/1/.moo test2/
Please be aware that there appears to be a bug in
cp --parents. When I used
--parents along with
--preserve=all, the date and time attributes of SOME
destination directories were NOT preserved.
The following link seems to confirm that this is a bug: bug#8767: cp: –preserve=all doesn’t work for the parents when –parent is
So it looks as though you can’t rely on attributes being preserved when using
--parents along with such as
--parents with the
cp command and worked perfeclty with me. for more details always use the manual.
Kubernetes Free Online Tutorial, Kubernetes Beginner Tutorial
DevOps Free Online Tutorial, DevOps Beginner Tutorial
Ansible Free Online Tutorial, Ansible Beginner Tutorial
Docker Free Online Tutorial, Docker Beginner Tutorial
Openstack Free Online Tutorial, Openstack Beginner Tutorial
Disclaimer: This has been sourced from a third party syndicated feed through internet. We are not responsibility or liability for its dependability, trustworthiness, reliability and data of the text. We reserves the sole right to alter, delete or remove (without notice) the content in its absolute discretion for any reason whatsoever.