Copiando uma árvore grande de uma máquina para outra, mantendo a propriedade

5

Estou tentando copiar uma estrutura de pastas grande entre máquinas. Eu quero manter a propriedade / direitos durante a cópia, pois não é razoável "consertar" os privs depois.

Portanto, estou usando o seguinte comando para tar o arquivo com privs intacto e transferir os dados para a máquina de destino. Os mesmos usuários existem em ambas as máquinas.

tar cfzp - foldertocopy | ssh me@machine "cat > /applications/incoming/foldertocopy.tar.gz"

A transferência funciona bem, e o próximo passo é su fazer root na máquina remota e descompactar o arquivo.

O problema é: não há espaço em disco suficiente para armazenar os dados compactados e descompactados ao mesmo tempo .

Eu poderia usar rsync / scp recursivo, mas meu usuário não tem o direito de criar os arquivos com os privs corretos e o root não pode logar remotamente.

Quais são minhas opções? A máquina de origem é RHEL4 e o destino é RHEL5.

    
por Rich 30.01.2012 / 14:06

3 respostas

9

Como root, configure um pipe nomeado:

# mkfifo /tmp/fifo
# chmod o+w /tmp/fifo

Em seguida, transfira seus dados como me :

$ tar cfzp - foldertocopy | ssh me@machine "cat > /tmp/fifo"

Mas leia como root :

# tar -xfzp /tmp/fifo
    
por 30.01.2012 / 14:46
2

Uma solução para o problema é fazer com que o ssh execute o untar diretamente:

tar cfzp - foldertocopy | ssh me@machine "cd rightplace; tar xzf -"
    
por 30.01.2012 / 14:36
2

Por que você não usa o rsync de arquivamento?

rsync -avzHAX foldertocopy user@remoteserver:/file/path/to/copy

Desta forma você pode salvar todos os detalhes sobre o arquivo, também com "z" o rsync comprime o fluxo em tempo real.

    
por 30.01.2012 / 16:12