Como transferir as permissões de arquivo de uma pasta para outra?

2

Eu fiz cp -r em uma pasta (copy) e, em seguida, removi o original. Eu tenho um backup com a maioria dos arquivos. Como faço para restaurar as permissões dos arquivos & amp; pastas na cópia usando o backup?

Seria muito entediante entrar e fazer chmod XXX filename de cada item lá dentro.

    
por BLaZuRE 27.07.2012 / 04:39

3 respostas

2

Você pode usar stat para consultar o modo em seu arquivo de backup e chmod para atualizar seus arquivos de trabalho. Faça isso em um loop, com uma pequena manipulação de string e você terá uma solução. Algo como isso deve funcionar para copiar as permissões:

# path to the top level of the backup
backup_dir=/path/to/backup/dir

# path to the directory of files that you want to restore
# permissions on.
dir=/path/to/working/dir

find "$backup_dir" |
while read backup_file
do
    new_file="$dir${backup_file#$backup_dir}"
    chmod --reference="$backup_file" "$new_file"
done

Observe que isso não funcionará bem se os nomes dos arquivos contiverem o caractere de nova linha (mas isso é muito raro). Além disso, não foi testado, então você pode querer fazer um "dry-run" mudando 'chmod' para 'echo chmod', então ele apenas imprime o que faria.

    
por Jeremy Kerr 27.07.2012 / 05:41
0

Qual sistema de backup você está usando? Se for o backup do Ubuntu, você pode restaurar o original usando o nautilus. Clique com o botão direito do mouse na pasta principal e escolha "Restaurar arquivos ausentes" no menu.

    
por Jazz 27.07.2012 / 05:22
0

use cp -a ou mais geralmente cp --preserve=all

da página de manual

       --preserve[=ATTR_LIST]
              preserve  the  specified  attributes   (default:   mode,owner‐
              ship,timestamps),  if possible additional attributes: context,
              links, xattr, all

chmod também tem uma opção recursiva ( -R ).

    
por user72421 27.07.2012 / 08:08