Automatize um comando rsync remoto usando aliases bash?

1

Eu lido com muitos servidores que geralmente têm arquivos e pastas que não estão sob controle de versão. Isso significa que posso apenas git remote add se eu precisar trabalhar com os arquivos na minha máquina local.

Com isso em mente, muitas vezes eu estou navegando no servidor quando percebo que eu preciso de uma cópia de uma determinada pasta, então eu escrevi este comando simples bash para imprimir o comando para que eu possa copiá-lo e executá-lo na minha máquina local.

#!/bin/bash
echo "sudo rsync -av -e ssh $(whoami)@$HOSTNAME:$(pwd) ./" 

Que gera um comando como este, que posso executar no meu computador doméstico:

sudo rsync -av -e ssh user@hostname:/opt/lib/folder ./

Agora, minha pergunta é: como faço isso em um alias do bash para que eu possa adicioná-lo à minha conta de usuário em cada um dos servidores?

    
por Xeoncross 06.08.2012 / 22:11

2 respostas

1

Você pode usar uma função em vez de um alias. Basta colocá-lo em seu arquivo ~/.bashrc da seguinte forma:

print_rsync ()
{
    echo "sudo rsync -av -e ssh $(whoami)@$HOSTNAME:$(pwd) ./"
}

As funções são muito mais flexíveis do que os aliases porque você pode executar um número arbitrário de comandos e até passar parâmetros.

    
por 11.08.2012 / 17:13
0

Do meu entendimento de aliases de shell, eles são estáticos e você não pode colocar coisas dinâmicas como variáveis ou comandos neles.

Copie seu script em algum lugar em seu PATH como /usr/local/bin ou crie uma pasta bin para seu usuário:

mkdir ~/bin
echo 'export PATH="$PATH:$HOME/bin"' >> ~/.bashrc
. .bashrc # or reopen terminal
cp script.sh ~/bin
    
por 11.08.2012 / 15:48

Tags