it-swarm-pt.tech

Servidor Linux remoto para cópia direta do servidor linux remoto. Quão?

Qual é a melhor maneira de copiar um diretório (com subdiretórios e arquivos) de um servidor Linux remoto para outro servidor Linux remoto? Eu me conectei a ambos usando o cliente SSH (como PuTTY). Eu tenho acesso root a ambos.

43
Arun Agrawal

Existem duas maneiras de fazer isso normalmente, ambas usam ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

ou, o método mais robusto e mais rápido (em termos de velocidade de transferência):

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

Leia as páginas de manual de cada comando se desejar obter mais detalhes sobre como eles funcionam.

62
Ycros

Eu modificaria uma resposta sugerida anteriormente:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

do seguinte modo:

-a (para arquivamento) implica -rlptgoD, então l e p acima são supérfluos. Também gosto de incluir -H, que copia links físicos. Não faz parte de -a por padrão, porque é caro. Então agora temos o seguinte:

rsync -aHvz /path/to/sfolder [email protected]:/path/to/remote/dfolder

Você também deve ter cuidado com as barras finais. Você provavelmente quer

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

se o desejo é que o conteúdo da fonte "pasta" apareça no destino "pasta". Sem a barra final, um subdiretório "sfolder" seria criado no destino "dfolder".

32
user19218

rsync -avlzp/caminho/para/nome da [email protected]:/caminho/para/remoto/pasta

9
Ana Betts
scp -r <directory> <username>@<targethost>:<targetdir>
6
Cody Brocious

Faça login em uma máquina

$ scp -r/caminho/para/topo/diretório usuário @ servidor:/caminho/para/cópia

5
Flame

Tente uníssono se a tarefa for recorrente. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Confira scp ou rsync , man scpman rsync

scp file1 file2 dir3 [email protected]:path
2
John Douthat

Use o rsync para poder continuar se a conexão for interrompida. E se algo mudar, você também poderá copiá-los muito mais rapidamente!

O Rsync trabalha com SSH para que sua operação de cópia seja segura.

2
Ady Romantika

Eu usei o rdiffbackup http://www.nongnu.org/rdiff-backup/index.html porque ele faz tudo o que você precisa sem opções sofisticadas. É baseado no algoritmo rsync. Se você precisar copiar apenas uma vez, poderá remover posteriormente o diretório rdiff-backup-data no host de destino.

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

do documento:

o rdiff-backup também preserva subdiretórios, links físicos, arquivos de desenvolvimento, permissões, propriedade de uid/gid, tempos de modificação, atributos estendidos, acls e garfos de recursos.

que é um bônus para as propostas scp -p, pois a opção -p não preserva tudo (por exemplo, os direitos nos diretórios estão mal configurados)

instalar no ubuntu:

Sudo apt-get install rdiff-backup
2
Gunstick

o scp fará o trabalho, mas há um problema: a conexão com o segundo destino remoto usará a configuração no primeiro destino remoto; portanto, se você usar .ssh/config no ambiente local e esperar que as chaves rsa e dsa trabalho, você deve encaminhar seu agente para o primeiro host remoto.

1
Justin Dossey

Bem, uma resposta rápida seria dar uma olhada na página de manual 'scp', ou talvez rsync - dependendo exatamente do que você precisa copiar. Se necessário, você pode até fazer tar-over-ssh:

tar cvf - | ssh server tar xf -
1
zigdon

Eu acho que você pode tentar com:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(e presumo que você esteja no Host0 e deseje copiar diretamente do Host1 para o Host2)

Se o acima não funcionar, você pode tentar:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

nisso, funcionaria, se você já tiver configurado o login SSH sem senha do Host1 para o Host2

1
Ram Prasad

Como usuário não root, idealmente:

scp -r src $ Host: $ caminho

Se você já possui parte do conteúdo do $ Host, considere usar o rsync com ssh como um túnel.

/ Allan

0
Allan Wind

Se você quer ser uma cópia exata, provavelmente também deseja usar a opção -p para scp, se estiver usando isso. Eu descobri que scp lê nos dispositivos e tive problemas com o cpio, então eu sempre uso pessoalmente tar , como isso:

cd /Origin; find . -xdev -depth -not -path ./lost+found -print0 \
| tar --create --atime-preserve=system --null --files-from=- --format=posix \
--no-recursion --sparse | ssh targethost 'cd /target; tar --extract \
--overwrite --preserve-permissions --sparse'

Eu mantenho esse encantamento em um arquivo com vários outros meios de copiar arquivos. Este é para copiar sobre SSH; os outros são para copiar para um arquivo compactado, para copiar no mesmo computador e para copiar em um soquete não criptografado TCP quando o SSH estiver muito lento.

0
Teddy

scp, como mencionado acima, geralmente é a melhor maneira, mas não esqueça dois-pontos na especificação do diretório remoto, caso contrário, você obterá uma cópia do diretório de origem na máquina local.

0
Sergey Stolyarov

Eu gosto de canalizar o alcatrão através do ssh.

tar cf - [diretório] | ssh [nome do usuário] @ [nome do host] tar xf - -C [destino na caixa remota]

Este método oferece muitas opções. Como você deve ter o ssh root desativado, é difícil copiar arquivos para várias contas de usuário, pois você está efetuando login no servidor remoto como um usuário normal. Para contornar isso, você pode criar um arquivo tar na caixa remota que ainda mantém e preserva a propriedade.

tar cf - [diretório] | ssh [nome do usuário] @ [nome do host] "cat> output.tar"

Para conexões lentas, você pode adicionar compactação, z para gzip ou j para bzip2.

tar cjf - [diretório] | ssh [nome do usuário] @ [nome do host] "cat> output.tar.bz2"

tar czf - [diretório] | ssh [nome do usuário] @ [nome do host] "cat> output.tar.gz"

tar czf - [diretório] | ssh [nome de usuário] @ [nome do host] tar xzf - -C [destino na caixa remota]

0
Chuck