rsync: copy symlink realpaths vs. re-create symlinks












0














I have this command now:



rsync --copy-links -r src dest


this will copy the target files of any symlinks in src and write out copies of those files in dest.



My question is - is there a way to re-create the symlinks with simply a new target (dest)?



I tried



rsync --links -r src dest


but that didn't seem to do anything.



Say my src dir looks like:



src/
foo/
bar/ # symlinked dir
baz/









share|improve this question






















  • supposedly --links should work tho: linux.die.net/man/1/rsync
    – Alexander Mills
    Dec 18 at 7:02










  • I also tried --copy-dirlinks this also copied bar instead of copying the symlink
    – Alexander Mills
    Dec 18 at 7:13










  • I can not reproduce this. rsync -r --links src dest copies the links.
    – Kusalananda
    Dec 18 at 7:30
















0














I have this command now:



rsync --copy-links -r src dest


this will copy the target files of any symlinks in src and write out copies of those files in dest.



My question is - is there a way to re-create the symlinks with simply a new target (dest)?



I tried



rsync --links -r src dest


but that didn't seem to do anything.



Say my src dir looks like:



src/
foo/
bar/ # symlinked dir
baz/









share|improve this question






















  • supposedly --links should work tho: linux.die.net/man/1/rsync
    – Alexander Mills
    Dec 18 at 7:02










  • I also tried --copy-dirlinks this also copied bar instead of copying the symlink
    – Alexander Mills
    Dec 18 at 7:13










  • I can not reproduce this. rsync -r --links src dest copies the links.
    – Kusalananda
    Dec 18 at 7:30














0












0








0


2





I have this command now:



rsync --copy-links -r src dest


this will copy the target files of any symlinks in src and write out copies of those files in dest.



My question is - is there a way to re-create the symlinks with simply a new target (dest)?



I tried



rsync --links -r src dest


but that didn't seem to do anything.



Say my src dir looks like:



src/
foo/
bar/ # symlinked dir
baz/









share|improve this question













I have this command now:



rsync --copy-links -r src dest


this will copy the target files of any symlinks in src and write out copies of those files in dest.



My question is - is there a way to re-create the symlinks with simply a new target (dest)?



I tried



rsync --links -r src dest


but that didn't seem to do anything.



Say my src dir looks like:



src/
foo/
bar/ # symlinked dir
baz/






rsync






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 18 at 7:01









Alexander Mills

2,15911442




2,15911442












  • supposedly --links should work tho: linux.die.net/man/1/rsync
    – Alexander Mills
    Dec 18 at 7:02










  • I also tried --copy-dirlinks this also copied bar instead of copying the symlink
    – Alexander Mills
    Dec 18 at 7:13










  • I can not reproduce this. rsync -r --links src dest copies the links.
    – Kusalananda
    Dec 18 at 7:30


















  • supposedly --links should work tho: linux.die.net/man/1/rsync
    – Alexander Mills
    Dec 18 at 7:02










  • I also tried --copy-dirlinks this also copied bar instead of copying the symlink
    – Alexander Mills
    Dec 18 at 7:13










  • I can not reproduce this. rsync -r --links src dest copies the links.
    – Kusalananda
    Dec 18 at 7:30
















supposedly --links should work tho: linux.die.net/man/1/rsync
– Alexander Mills
Dec 18 at 7:02




supposedly --links should work tho: linux.die.net/man/1/rsync
– Alexander Mills
Dec 18 at 7:02












I also tried --copy-dirlinks this also copied bar instead of copying the symlink
– Alexander Mills
Dec 18 at 7:13




I also tried --copy-dirlinks this also copied bar instead of copying the symlink
– Alexander Mills
Dec 18 at 7:13












I can not reproduce this. rsync -r --links src dest copies the links.
– Kusalananda
Dec 18 at 7:30




I can not reproduce this. rsync -r --links src dest copies the links.
– Kusalananda
Dec 18 at 7:30










1 Answer
1






active

oldest

votes


















1














--links is correct. But if you have previously used --copy-links, then it will have created real directories (with content) in the destination. A later run with --links will not be able to remove those directories to replace them with links.



$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar


Now try to copy the links...



$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]


Oops, not yet. Need to remove the destination directory first.



$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar





share|improve this answer





















  • hmmm thanks let me try it again, I didn't see the dir show up after the copy
    – Alexander Mills
    Dec 18 at 9:30











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
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489625%2frsync-copy-symlink-realpaths-vs-re-create-symlinks%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









1














--links is correct. But if you have previously used --copy-links, then it will have created real directories (with content) in the destination. A later run with --links will not be able to remove those directories to replace them with links.



$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar


Now try to copy the links...



$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]


Oops, not yet. Need to remove the destination directory first.



$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar





share|improve this answer





















  • hmmm thanks let me try it again, I didn't see the dir show up after the copy
    – Alexander Mills
    Dec 18 at 9:30
















1














--links is correct. But if you have previously used --copy-links, then it will have created real directories (with content) in the destination. A later run with --links will not be able to remove those directories to replace them with links.



$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar


Now try to copy the links...



$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]


Oops, not yet. Need to remove the destination directory first.



$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar





share|improve this answer





















  • hmmm thanks let me try it again, I didn't see the dir show up after the copy
    – Alexander Mills
    Dec 18 at 9:30














1












1








1






--links is correct. But if you have previously used --copy-links, then it will have created real directories (with content) in the destination. A later run with --links will not be able to remove those directories to replace them with links.



$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar


Now try to copy the links...



$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]


Oops, not yet. Need to remove the destination directory first.



$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar





share|improve this answer












--links is correct. But if you have previously used --copy-links, then it will have created real directories (with content) in the destination. A later run with --links will not be able to remove those directories to replace them with links.



$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar


Now try to copy the links...



$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]


Oops, not yet. Need to remove the destination directory first.



$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar






share|improve this answer












share|improve this answer



share|improve this answer










answered Dec 18 at 8:55









BowlOfRed

2,465715




2,465715












  • hmmm thanks let me try it again, I didn't see the dir show up after the copy
    – Alexander Mills
    Dec 18 at 9:30


















  • hmmm thanks let me try it again, I didn't see the dir show up after the copy
    – Alexander Mills
    Dec 18 at 9:30
















hmmm thanks let me try it again, I didn't see the dir show up after the copy
– Alexander Mills
Dec 18 at 9:30




hmmm thanks let me try it again, I didn't see the dir show up after the copy
– Alexander Mills
Dec 18 at 9:30


















draft saved

draft discarded




















































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.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f489625%2frsync-copy-symlink-realpaths-vs-re-create-symlinks%23new-answer', 'question_page');
}
);

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







Popular posts from this blog

Morgemoulin

Scott Moir

Souastre