Suponha que eu precise copiar arquivos
~/path/to/file
para user@remote:/path/to/file
~/path/to/another/file
para user@remote:/path/to/another/file
~/path/alternative
para user@remote:/path/alternative
Existe uma maneira de fazer isso usando rsync
ou scp
?
eu tentei rsync ~/path/{to/file,to/another/file,alternative} user@remote:/path
Mas não é uma opção se eu precisar copiar para outro destino another_path
.
Copiar arquivo por arquivo é muito longo se eu precisar copiar pelo menos 20 arquivos.
rsync
file-transfer
scp
Nemoden
fonte
fonte
~/path/
, verifique a--files-from
opção do rsync .Respostas:
Se você deseja transferir uma seleção de arquivos via rsync, ou seja, não todo o diretório, incluindo o conteúdo, a melhor maneira de fazer isso é usando a
--files-from
opção do rsync . Coloque os nomes dos caminhos dos arquivos que você deseja transferir, em relação ao diretório de origem que você especificar. Veja a página de manual do rsync para informações mais detalhadas.fonte
Esse script copiará um número arbitrário de diretórios de entrada, para um número arbitrário de hosts, em paralelo pelo uso de trabalhos em segundo plano do shell. Aqui eu usei o cpio porque é fácil dividir e canalizar os arquivos de entrada, mas você pode modificar isso para usar
rsync --files-from
também.Uso:
multi-cpio.sh <srcfile> <dstfile>
(requer ssh-keys no lugar para login não interativo)srcfile
contém um diretório por linha, como:dstfile
contém um destino remoto por linha, como:... e a fonte para
multi-cpio.sh
:Consulte também http://rightsock.com/~kjw/Ramblings/tar_v_cpio.html para obter referências adicionais da cpio e a inspiração para este script.
Edit: Sintaxe alternativa para apenas um src dst, sem criar o arquivo srcfile destfile:
fonte