Cp command does an extra copying on different Ubuntu version for folder cloning
Edit: Found a duplicate with solution: rsync -a --delete https://stackoverflow.com/questions/23698183/how-to-force-cp-to-overwrite-directory-instead-of-creating-another-one-inside
new script that works:
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(rsync -a --delete $cmdline/ $cmdline$i/; ) &
(echo "preparing folder clone: $i") &
done
wait
For multithreaded folder copying,
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(cp -rf $cmdline $cmdline$i; ) &
(echo "preparing folder clone: $i") &
done
wait
this script copies a source folder $cmdline
to (non-existent) destination $cmdline$i
without issue at my pc with Ubuntu 16.04 but when I run same script on a cloud computer with Ubuntu 18.04, it does this:
- duplicates source as destination (I need only this)
- duplicates source into destination too (
destination/source
I don't want this)
this doesn't break any programs but I don't want to consume unnecessary cloud space.
Why would some different version of Ubuntu add a secondary copy into destination folder?
I'm using this script as
./myscript.sh 2 foldertest
this duplicates foldertest as foldertest1 and foldertest2. If first parameter is 32 then it makes 32 copies up to foldertest32.
Documentation of cp says -r is recursive copy which is I need to do full deep cloning of source folder just like copy pasting (in-place where it produces folder2 folder3 ...) in windows or graphical terminal of Ubuntu. Also I add -f to force it copy files without asking because I'm making up to 64 clones and don't want to answer 64 questions if there are already 64 clones.
Some extra info about the behaviour I need:
Folder A: a.txt b.txt c.txt
Folder A1,A2,A3,A4.. to be:
a.txt
b.txt
c.txt
but instead it is:
a.txt
b.txt
c.txt
A
normally when I copy file to file, it overwrites(if it exists). I need same overwrite behavior on folders, not copying into.
ubuntu cp
add a comment |
Edit: Found a duplicate with solution: rsync -a --delete https://stackoverflow.com/questions/23698183/how-to-force-cp-to-overwrite-directory-instead-of-creating-another-one-inside
new script that works:
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(rsync -a --delete $cmdline/ $cmdline$i/; ) &
(echo "preparing folder clone: $i") &
done
wait
For multithreaded folder copying,
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(cp -rf $cmdline $cmdline$i; ) &
(echo "preparing folder clone: $i") &
done
wait
this script copies a source folder $cmdline
to (non-existent) destination $cmdline$i
without issue at my pc with Ubuntu 16.04 but when I run same script on a cloud computer with Ubuntu 18.04, it does this:
- duplicates source as destination (I need only this)
- duplicates source into destination too (
destination/source
I don't want this)
this doesn't break any programs but I don't want to consume unnecessary cloud space.
Why would some different version of Ubuntu add a secondary copy into destination folder?
I'm using this script as
./myscript.sh 2 foldertest
this duplicates foldertest as foldertest1 and foldertest2. If first parameter is 32 then it makes 32 copies up to foldertest32.
Documentation of cp says -r is recursive copy which is I need to do full deep cloning of source folder just like copy pasting (in-place where it produces folder2 folder3 ...) in windows or graphical terminal of Ubuntu. Also I add -f to force it copy files without asking because I'm making up to 64 clones and don't want to answer 64 questions if there are already 64 clones.
Some extra info about the behaviour I need:
Folder A: a.txt b.txt c.txt
Folder A1,A2,A3,A4.. to be:
a.txt
b.txt
c.txt
but instead it is:
a.txt
b.txt
c.txt
A
normally when I copy file to file, it overwrites(if it exists). I need same overwrite behavior on folders, not copying into.
ubuntu cp
What do you mean with "it duplicates the source into the destination too"? I don't understand. :(
– Tommiie
1 hour ago
I need a folder "foldera" deep copied over a new folder "folderb" which doesn't exist or not. But it does extra copy that makes "folderb/foldera" duplicating its size. It makes a new folder but that new folder contains source as a whole too. There are N files in source folder, ther are copied which is ok but it also copies source "into" destination too not just "over".
– huseyin tugrul buyukisik
1 hour ago
Okay. Now I understand. Thanks.
– Tommiie
1 hour ago
There must be something very simple that I miss but can't see. Most probably I'm wrong and Linux is right but where?
– huseyin tugrul buyukisik
1 hour ago
1
Ok I found a duplicate stackoverflow.com/questions/23698183/…
– huseyin tugrul buyukisik
56 mins ago
add a comment |
Edit: Found a duplicate with solution: rsync -a --delete https://stackoverflow.com/questions/23698183/how-to-force-cp-to-overwrite-directory-instead-of-creating-another-one-inside
new script that works:
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(rsync -a --delete $cmdline/ $cmdline$i/; ) &
(echo "preparing folder clone: $i") &
done
wait
For multithreaded folder copying,
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(cp -rf $cmdline $cmdline$i; ) &
(echo "preparing folder clone: $i") &
done
wait
this script copies a source folder $cmdline
to (non-existent) destination $cmdline$i
without issue at my pc with Ubuntu 16.04 but when I run same script on a cloud computer with Ubuntu 18.04, it does this:
- duplicates source as destination (I need only this)
- duplicates source into destination too (
destination/source
I don't want this)
this doesn't break any programs but I don't want to consume unnecessary cloud space.
Why would some different version of Ubuntu add a secondary copy into destination folder?
I'm using this script as
./myscript.sh 2 foldertest
this duplicates foldertest as foldertest1 and foldertest2. If first parameter is 32 then it makes 32 copies up to foldertest32.
Documentation of cp says -r is recursive copy which is I need to do full deep cloning of source folder just like copy pasting (in-place where it produces folder2 folder3 ...) in windows or graphical terminal of Ubuntu. Also I add -f to force it copy files without asking because I'm making up to 64 clones and don't want to answer 64 questions if there are already 64 clones.
Some extra info about the behaviour I need:
Folder A: a.txt b.txt c.txt
Folder A1,A2,A3,A4.. to be:
a.txt
b.txt
c.txt
but instead it is:
a.txt
b.txt
c.txt
A
normally when I copy file to file, it overwrites(if it exists). I need same overwrite behavior on folders, not copying into.
ubuntu cp
Edit: Found a duplicate with solution: rsync -a --delete https://stackoverflow.com/questions/23698183/how-to-force-cp-to-overwrite-directory-instead-of-creating-another-one-inside
new script that works:
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(rsync -a --delete $cmdline/ $cmdline$i/; ) &
(echo "preparing folder clone: $i") &
done
wait
For multithreaded folder copying,
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(cp -rf $cmdline $cmdline$i; ) &
(echo "preparing folder clone: $i") &
done
wait
this script copies a source folder $cmdline
to (non-existent) destination $cmdline$i
without issue at my pc with Ubuntu 16.04 but when I run same script on a cloud computer with Ubuntu 18.04, it does this:
- duplicates source as destination (I need only this)
- duplicates source into destination too (
destination/source
I don't want this)
this doesn't break any programs but I don't want to consume unnecessary cloud space.
Why would some different version of Ubuntu add a secondary copy into destination folder?
I'm using this script as
./myscript.sh 2 foldertest
this duplicates foldertest as foldertest1 and foldertest2. If first parameter is 32 then it makes 32 copies up to foldertest32.
Documentation of cp says -r is recursive copy which is I need to do full deep cloning of source folder just like copy pasting (in-place where it produces folder2 folder3 ...) in windows or graphical terminal of Ubuntu. Also I add -f to force it copy files without asking because I'm making up to 64 clones and don't want to answer 64 questions if there are already 64 clones.
Some extra info about the behaviour I need:
Folder A: a.txt b.txt c.txt
Folder A1,A2,A3,A4.. to be:
a.txt
b.txt
c.txt
but instead it is:
a.txt
b.txt
c.txt
A
normally when I copy file to file, it overwrites(if it exists). I need same overwrite behavior on folders, not copying into.
ubuntu cp
ubuntu cp
edited 52 mins ago
huseyin tugrul buyukisik
asked 1 hour ago
huseyin tugrul buyukisikhuseyin tugrul buyukisik
1325
1325
What do you mean with "it duplicates the source into the destination too"? I don't understand. :(
– Tommiie
1 hour ago
I need a folder "foldera" deep copied over a new folder "folderb" which doesn't exist or not. But it does extra copy that makes "folderb/foldera" duplicating its size. It makes a new folder but that new folder contains source as a whole too. There are N files in source folder, ther are copied which is ok but it also copies source "into" destination too not just "over".
– huseyin tugrul buyukisik
1 hour ago
Okay. Now I understand. Thanks.
– Tommiie
1 hour ago
There must be something very simple that I miss but can't see. Most probably I'm wrong and Linux is right but where?
– huseyin tugrul buyukisik
1 hour ago
1
Ok I found a duplicate stackoverflow.com/questions/23698183/…
– huseyin tugrul buyukisik
56 mins ago
add a comment |
What do you mean with "it duplicates the source into the destination too"? I don't understand. :(
– Tommiie
1 hour ago
I need a folder "foldera" deep copied over a new folder "folderb" which doesn't exist or not. But it does extra copy that makes "folderb/foldera" duplicating its size. It makes a new folder but that new folder contains source as a whole too. There are N files in source folder, ther are copied which is ok but it also copies source "into" destination too not just "over".
– huseyin tugrul buyukisik
1 hour ago
Okay. Now I understand. Thanks.
– Tommiie
1 hour ago
There must be something very simple that I miss but can't see. Most probably I'm wrong and Linux is right but where?
– huseyin tugrul buyukisik
1 hour ago
1
Ok I found a duplicate stackoverflow.com/questions/23698183/…
– huseyin tugrul buyukisik
56 mins ago
What do you mean with "it duplicates the source into the destination too"? I don't understand. :(
– Tommiie
1 hour ago
What do you mean with "it duplicates the source into the destination too"? I don't understand. :(
– Tommiie
1 hour ago
I need a folder "foldera" deep copied over a new folder "folderb" which doesn't exist or not. But it does extra copy that makes "folderb/foldera" duplicating its size. It makes a new folder but that new folder contains source as a whole too. There are N files in source folder, ther are copied which is ok but it also copies source "into" destination too not just "over".
– huseyin tugrul buyukisik
1 hour ago
I need a folder "foldera" deep copied over a new folder "folderb" which doesn't exist or not. But it does extra copy that makes "folderb/foldera" duplicating its size. It makes a new folder but that new folder contains source as a whole too. There are N files in source folder, ther are copied which is ok but it also copies source "into" destination too not just "over".
– huseyin tugrul buyukisik
1 hour ago
Okay. Now I understand. Thanks.
– Tommiie
1 hour ago
Okay. Now I understand. Thanks.
– Tommiie
1 hour ago
There must be something very simple that I miss but can't see. Most probably I'm wrong and Linux is right but where?
– huseyin tugrul buyukisik
1 hour ago
There must be something very simple that I miss but can't see. Most probably I'm wrong and Linux is right but where?
– huseyin tugrul buyukisik
1 hour ago
1
1
Ok I found a duplicate stackoverflow.com/questions/23698183/…
– huseyin tugrul buyukisik
56 mins ago
Ok I found a duplicate stackoverflow.com/questions/23698183/…
– huseyin tugrul buyukisik
56 mins ago
add a comment |
1 Answer
1
active
oldest
votes
The result of cp -rf source dest
is different if dest
already exists.
- If
dest
does not exist, it will create a copy ofsource
with the namedest
. Assumingsource
contains a filef1
, it will createdest/f1
. - If
dest
exists as a directory and ifdest
does not contain a file namedsource
, it will copysource
with all its contents intodest
. With the example above you will getdest/source/f1
. - If
dest
exists as a file and ifsource
is a directory, the copying will fail. - If
dest
exists as a directory and ifdest
contains a file namedsource
, copying will fail. - If
dest
exists as a file and ifsource
is a file, it will overwritedest
with the contents ofsource
.
If you want to remove any existing destination directory you could change (cp -rf $cmdline $cmdline$i; ) &
into (rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &
.
New contributor
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
I thinkrsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)
– Bodo
44 mins ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f493421%2fcp-command-does-an-extra-copying-on-different-ubuntu-version-for-folder-cloning%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The result of cp -rf source dest
is different if dest
already exists.
- If
dest
does not exist, it will create a copy ofsource
with the namedest
. Assumingsource
contains a filef1
, it will createdest/f1
. - If
dest
exists as a directory and ifdest
does not contain a file namedsource
, it will copysource
with all its contents intodest
. With the example above you will getdest/source/f1
. - If
dest
exists as a file and ifsource
is a directory, the copying will fail. - If
dest
exists as a directory and ifdest
contains a file namedsource
, copying will fail. - If
dest
exists as a file and ifsource
is a file, it will overwritedest
with the contents ofsource
.
If you want to remove any existing destination directory you could change (cp -rf $cmdline $cmdline$i; ) &
into (rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &
.
New contributor
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
I thinkrsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)
– Bodo
44 mins ago
add a comment |
The result of cp -rf source dest
is different if dest
already exists.
- If
dest
does not exist, it will create a copy ofsource
with the namedest
. Assumingsource
contains a filef1
, it will createdest/f1
. - If
dest
exists as a directory and ifdest
does not contain a file namedsource
, it will copysource
with all its contents intodest
. With the example above you will getdest/source/f1
. - If
dest
exists as a file and ifsource
is a directory, the copying will fail. - If
dest
exists as a directory and ifdest
contains a file namedsource
, copying will fail. - If
dest
exists as a file and ifsource
is a file, it will overwritedest
with the contents ofsource
.
If you want to remove any existing destination directory you could change (cp -rf $cmdline $cmdline$i; ) &
into (rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &
.
New contributor
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
I thinkrsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)
– Bodo
44 mins ago
add a comment |
The result of cp -rf source dest
is different if dest
already exists.
- If
dest
does not exist, it will create a copy ofsource
with the namedest
. Assumingsource
contains a filef1
, it will createdest/f1
. - If
dest
exists as a directory and ifdest
does not contain a file namedsource
, it will copysource
with all its contents intodest
. With the example above you will getdest/source/f1
. - If
dest
exists as a file and ifsource
is a directory, the copying will fail. - If
dest
exists as a directory and ifdest
contains a file namedsource
, copying will fail. - If
dest
exists as a file and ifsource
is a file, it will overwritedest
with the contents ofsource
.
If you want to remove any existing destination directory you could change (cp -rf $cmdline $cmdline$i; ) &
into (rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &
.
New contributor
The result of cp -rf source dest
is different if dest
already exists.
- If
dest
does not exist, it will create a copy ofsource
with the namedest
. Assumingsource
contains a filef1
, it will createdest/f1
. - If
dest
exists as a directory and ifdest
does not contain a file namedsource
, it will copysource
with all its contents intodest
. With the example above you will getdest/source/f1
. - If
dest
exists as a file and ifsource
is a directory, the copying will fail. - If
dest
exists as a directory and ifdest
contains a file namedsource
, copying will fail. - If
dest
exists as a file and ifsource
is a file, it will overwritedest
with the contents ofsource
.
If you want to remove any existing destination directory you could change (cp -rf $cmdline $cmdline$i; ) &
into (rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &
.
New contributor
New contributor
answered 52 mins ago
BodoBodo
1804
1804
New contributor
New contributor
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
I thinkrsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)
– Bodo
44 mins ago
add a comment |
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
I thinkrsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)
– Bodo
44 mins ago
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
Thank you. Does rsync exist on all distros? Is cp safer to use in newly created Ubuntu images of Amazon aws for example?
– huseyin tugrul buyukisik
46 mins ago
I think
rsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)– Bodo
44 mins ago
I think
rsync
is available on all distros, but you might have to install the package first. (I don't know if it gets installed by default.)– Bodo
44 mins ago
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f493421%2fcp-command-does-an-extra-copying-on-different-ubuntu-version-for-folder-cloning%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What do you mean with "it duplicates the source into the destination too"? I don't understand. :(
– Tommiie
1 hour ago
I need a folder "foldera" deep copied over a new folder "folderb" which doesn't exist or not. But it does extra copy that makes "folderb/foldera" duplicating its size. It makes a new folder but that new folder contains source as a whole too. There are N files in source folder, ther are copied which is ok but it also copies source "into" destination too not just "over".
– huseyin tugrul buyukisik
1 hour ago
Okay. Now I understand. Thanks.
– Tommiie
1 hour ago
There must be something very simple that I miss but can't see. Most probably I'm wrong and Linux is right but where?
– huseyin tugrul buyukisik
1 hour ago
1
Ok I found a duplicate stackoverflow.com/questions/23698183/…
– huseyin tugrul buyukisik
56 mins ago