Replace symlink with original file when edited

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












0














In a web project I used symlinks for shared data to save up space. The structure is one directory including the original data (e.g. css and js) and multiple directory with symlinks to the original data. The problem is when users change settings their data is going to edit, but because they are symlinks the original data gets edited. So I am searching for a way to break the link and save the data in the place of the symlink. How can I achieve this?



Something like: when writing to file if it is symlink remove it, write the data in that path.



EDIT:



I need an OS level approach, because file edit occurrences are out of my control. Also is it possible with hooks?










share|improve this question























  • Remove the symlinks and copy the files.
    – Romeo Ninov
    Dec 24 '18 at 7:49










  • If you are on XFS, you might use reflink. Reference: unix.stackexchange.com/questions/393305/…
    – amdyes
    Dec 24 '18 at 8:01










  • @amdyes I'm not on XFS. can I use system calls and modify it for cp?
    – Ali Sh
    Dec 24 '18 at 8:54
















0














In a web project I used symlinks for shared data to save up space. The structure is one directory including the original data (e.g. css and js) and multiple directory with symlinks to the original data. The problem is when users change settings their data is going to edit, but because they are symlinks the original data gets edited. So I am searching for a way to break the link and save the data in the place of the symlink. How can I achieve this?



Something like: when writing to file if it is symlink remove it, write the data in that path.



EDIT:



I need an OS level approach, because file edit occurrences are out of my control. Also is it possible with hooks?










share|improve this question























  • Remove the symlinks and copy the files.
    – Romeo Ninov
    Dec 24 '18 at 7:49










  • If you are on XFS, you might use reflink. Reference: unix.stackexchange.com/questions/393305/…
    – amdyes
    Dec 24 '18 at 8:01










  • @amdyes I'm not on XFS. can I use system calls and modify it for cp?
    – Ali Sh
    Dec 24 '18 at 8:54














0












0








0







In a web project I used symlinks for shared data to save up space. The structure is one directory including the original data (e.g. css and js) and multiple directory with symlinks to the original data. The problem is when users change settings their data is going to edit, but because they are symlinks the original data gets edited. So I am searching for a way to break the link and save the data in the place of the symlink. How can I achieve this?



Something like: when writing to file if it is symlink remove it, write the data in that path.



EDIT:



I need an OS level approach, because file edit occurrences are out of my control. Also is it possible with hooks?










share|improve this question















In a web project I used symlinks for shared data to save up space. The structure is one directory including the original data (e.g. css and js) and multiple directory with symlinks to the original data. The problem is when users change settings their data is going to edit, but because they are symlinks the original data gets edited. So I am searching for a way to break the link and save the data in the place of the symlink. How can I achieve this?



Something like: when writing to file if it is symlink remove it, write the data in that path.



EDIT:



I need an OS level approach, because file edit occurrences are out of my control. Also is it possible with hooks?







symlink






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Dec 24 '18 at 10:36









ctrl-alt-delor

10.9k41957




10.9k41957










asked Dec 24 '18 at 6:51









Ali Sh

132




132











  • Remove the symlinks and copy the files.
    – Romeo Ninov
    Dec 24 '18 at 7:49










  • If you are on XFS, you might use reflink. Reference: unix.stackexchange.com/questions/393305/…
    – amdyes
    Dec 24 '18 at 8:01










  • @amdyes I'm not on XFS. can I use system calls and modify it for cp?
    – Ali Sh
    Dec 24 '18 at 8:54

















  • Remove the symlinks and copy the files.
    – Romeo Ninov
    Dec 24 '18 at 7:49










  • If you are on XFS, you might use reflink. Reference: unix.stackexchange.com/questions/393305/…
    – amdyes
    Dec 24 '18 at 8:01










  • @amdyes I'm not on XFS. can I use system calls and modify it for cp?
    – Ali Sh
    Dec 24 '18 at 8:54
















Remove the symlinks and copy the files.
– Romeo Ninov
Dec 24 '18 at 7:49




Remove the symlinks and copy the files.
– Romeo Ninov
Dec 24 '18 at 7:49












If you are on XFS, you might use reflink. Reference: unix.stackexchange.com/questions/393305/…
– amdyes
Dec 24 '18 at 8:01




If you are on XFS, you might use reflink. Reference: unix.stackexchange.com/questions/393305/…
– amdyes
Dec 24 '18 at 8:01












@amdyes I'm not on XFS. can I use system calls and modify it for cp?
– Ali Sh
Dec 24 '18 at 8:54





@amdyes I'm not on XFS. can I use system calls and modify it for cp?
– Ali Sh
Dec 24 '18 at 8:54











1 Answer
1






active

oldest

votes


















1














You can use a COW (Copy On Write) file-system, but you wont use symlinks. You would just copy the file. (but it would not copy it, until you edit/write to it).



or use some over-lay file-system, that has this property: look at what fuse file-systems exist.






share|improve this answer




















    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%2f490728%2freplace-symlink-with-original-file-when-edited%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














    You can use a COW (Copy On Write) file-system, but you wont use symlinks. You would just copy the file. (but it would not copy it, until you edit/write to it).



    or use some over-lay file-system, that has this property: look at what fuse file-systems exist.






    share|improve this answer

























      1














      You can use a COW (Copy On Write) file-system, but you wont use symlinks. You would just copy the file. (but it would not copy it, until you edit/write to it).



      or use some over-lay file-system, that has this property: look at what fuse file-systems exist.






      share|improve this answer























        1












        1








        1






        You can use a COW (Copy On Write) file-system, but you wont use symlinks. You would just copy the file. (but it would not copy it, until you edit/write to it).



        or use some over-lay file-system, that has this property: look at what fuse file-systems exist.






        share|improve this answer












        You can use a COW (Copy On Write) file-system, but you wont use symlinks. You would just copy the file. (but it would not copy it, until you edit/write to it).



        or use some over-lay file-system, that has this property: look at what fuse file-systems exist.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 24 '18 at 10:41









        ctrl-alt-delor

        10.9k41957




        10.9k41957



























            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%2f490728%2freplace-symlink-with-original-file-when-edited%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

            How to check contact read email or not when send email to Individual?

            Displaying single band from multi-band raster using QGIS

            How many registers does an x86_64 CPU actually have?