Como copiar a estrutura de diretórios de um servidor para outro sem usuário root?

1

Gostaria de saber a melhor maneira de copiar a estrutura de diretórios de um servidor (Unix) para outro (Linux):

  • sem usuário root
  • os servidores não estão conectados (por exemplo, não é possível usar o SSH diretamente entre eles)
  • preciso copiar somente pastas e subpastas, sem arquivos
  • as permissões nas pastas também devem ser transferidas

Então eu tenho user @ server1 com alguma estrutura de diretórios. Eu preciso copiar essa estrutura para user @ server2 sem arquivos, com as mesmas permissões. Os usuários nos dois servidores têm as mesmas permissões e estão no mesmo grupo, os servidores não estão conectados.

Edit: Esqueci de mencionar que server1 é Unix e server 2 é Linux. Então, quando eu tento executar o código do proycon no servidor Unix eu tenho a mensagem: tar: Não é um sinalizador reconhecido: z Quando eu tento a opção do Tom Hunt eu recebo a mensagem: -printf não é uma opção válida. Além disso, vale a pena mencionar que o usuário tem nomes diferentes, embora tenha os mesmos direitos e esteja no mesmo grupo. Então eu tenho user_xy @ server1 e user_zx @ server2

    
por botafogo 25.09.2015 / 22:24

2 respostas

3

Idealmente, você faria algo como rsync ou scp , mas as máquinas precisariam estar conectadas. Eu usaria tar com find se você não tem meios de transferência direta, pode preservar usuários, permissões e links simbólicos.

Em um host:

$ find yourdirectory/ -type d | tar -cvzf archive.tar.gz --no-recursion --files-from -

Transfira o arquivo por qualquer meio (ftp? USB stick? sinais de fumaça?)

No host de destino:

$ tar -xvzf archive.tar.gz
    
por 25.09.2015 / 22:56
2

Em server1 :

find . -type d -printf '%p\n%m\n' >dir_list

Transfira o arquivo dir_list do servidor1 para o servidor2 da maneira que achar melhor.

Em server2 :

while read -r filename; do
    read -r perms
    mkdir -p "$filename"
    chmod "$perms" "$filename"
done <dir_list

Isso criará todos os diretórios pertencentes ao usuário que você executa como server2 . A alteração da propriedade não pode ser feita sem superusuário.

    
por 25.09.2015 / 22:51