1

This question already has an answer here:

How do I copy all the folder, subfolders and files permissions (recursively) from /www_03062018 to my new /www ?

I came across this question on Super User.

chmod --reference=RFile file

Which didn't help much, it did apply a change for the main folder /www but didn't apply on its subfolders and files.

I have tried:

chmod -R --reference=/www_03062018 /www

and it didn't work.

My situation:

I have 2 folders on my Ubuntu machine: /www and /www_03062018.

/www is a "git clone" from the production machine.

/www_03062018 is my old directory that i used to work on and upload files via FTP.

I started to use GIT and when I clone a directory its folder ownerships and file accesses settings don't get cloned along with it.

marked as duplicate by steeldriver, Melebius, MadMike, user535733, Fabby Jun 4 '18 at 19:50

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • Git does neither record permissions nor ownership except for the x bit. You need some other means to maintain those file attributes. – PerlDuck Jun 3 '18 at 11:57
  • Yes i figured this out, i still have my backed up folder i used to work on, so i can copy its permissions tree maybe. if i can apply this to one folder, im sure there is a command that does that recursively @PerlDuck – Kar19 Jun 3 '18 at 11:58
  • 1
    And what is wrong with doing cp -R --preserve /www /www_03062018? – George Udosen Jun 3 '18 at 11:59
  • 1
    then there is cp -R --attributes-only /www_03062018 /www – George Udosen Jun 3 '18 at 12:12
  • 1
    Yes that was what i thought you were about so I posted a second command using cp that only copies the attributes over! – George Udosen Jun 3 '18 at 12:33
2

cd to the new directory which you want to give new permissions - in my case:

cd /www

For CHMOD this worked:

find . -path ./.git -prune -or -exec chmod --reference '/www_03062018/{}' '{}' ';' 

And for CHOWN this worked:

find . -path ./.git -prune -or -exec chown --reference '/www_03062018/{}' '{}' ';'

Hope this helps others :) !

Not the answer you're looking for? Browse other questions tagged or ask your own question.