Script para remover arquivos usando o SSH

0

Eu tenho um script que usa scp para fazer backup de alguns arquivos do meu PC em outro PC conectado na LAN, algo assim:

#!/bin/bash
scp some_directories host@ip-address:backupFolder/

Eu uso uma chave pública para funcionar sem inserir nenhuma senha, só preciso executá-la.

O problema é que se eu fizer backup de algum arquivo do meu PC e depois removê-lo (do meu PC e não do remoto), quando eu executar este script novamente, ele copia os novos arquivos e sobrescreve os existentes, mas não remover os arquivos anteriores salvos que não estão mais presentes no meu PC.

Então eu preciso de uma maneira de remover arquivos no PC remoto através de algum script. A única maneira que eu sei é entrar com ssh host@ip e depois usar rm , mas claramente não posso escrever um script como este:

#!/bin/bash
ssh host@ip-address
rm -r backupFolder/

porque desta forma o comando rm procura o backupFolder no meu PC e não no remoto.

    
por Red 05.06.2013 / 12:11

3 respostas

0

Sua descrição é um pouco vaga. Mas eu acho que o que você deseja arquivar é sincronizar a pasta de backup remoto com o seu PC (diretórios de sincronização).

Nesse caso, a ferramenta mais adequada seria rsync em vez de scp.

A boa notícia é que rsync funciona perfeitamente no SSH, a sua autenticação de chave pública continuará funcionando como um encanto.

Você pode usar o comando abaixo para manter seu backup no servidor remoto em sincronia com o seu PC

rsync -avz --delete --progress --stats some_directories host@ip-address:backupFolder/

% bl0ck_qu0te%     
por Terry Wang 05.06.2013 / 12:23
0

Basta anexar o comando que você deseja executar remotamente.

ssh user@ip-address rm -r backupFolder/

Isso executa o único comando na máquina remota. A manpage do cliente SSH informa esta sintaxe:

SYNOPSIS
     ssh [-1246AaCfgKkMNnqsTtVvXxYy] ...more options... [user@]hostname [command]

Como você já mencionou na sua pergunta, deve-se usar a autenticação de chave pública para efetuar login sem que seja solicitada uma senha. Para outros visitantes, consulte Como posso configurar o login SSH sem senha? para isso.

    
por gertvdijk 05.06.2013 / 12:32
0

Você pode ter um script usando

ssh host@ip-address << EOF
'rm foo'
exit
EOF

Ou você pode canalizar comandos para ssh usando acentos graves no terminal, ignorando a necessidade de escrever um script. Por exemplo:

ssh host@ip-address:folder 'rm foo'

Fonte: link

    
por Jez W 05.06.2013 / 12:37