O comando não é executado corretamente no servidor remoto

0

Estou tentando atualizar meu script de backup para salvar dados em um servidor remoto em vez de em um disco local.

Eu consegui converter o script inteiro, mas a última parte em que removi todos os arquivos do diretório, exceto o n newest.

Para depurar e identificar a causa, eu removi temporariamente todas as variáveis.

O comando que desejo executar na minha máquina remota é o seguinte:

ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f

Quando executo este comando, ele faz o que eu espero que ele faça. Ele deixa os 4 arquivos (ou diretórios) mais recentes e remove o resto.

Para executá-lo por SSH, tenho a seguinte linha no meu script:

foo='ssh $remoteuser@$remoteaddr ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f'

Eu tentei remover a última parte, o | xargs -d '\n' rm -f e que, de fato, retorna a lista de diretórios dos arquivos que precisam ser removidos. No entanto, adicionar a parte xarg não remove os arquivos.

    
por Christophe De Troyer 23.08.2015 / 17:26

1 resposta

1

Você precisa colocar o comando remoto entre aspas para executar tudo no servidor remoto, caso contrário, você executará tudo após o canal no host local, o que não é o que você deseja (conforme descrito nos comentários):

foo='ssh $remoteuser@$remoteaddr "ls -tr1 /mnt/backup1tb/testarossa/test | tail -n +5 | xargs -d '\n' rm -f"'
    
por 23.08.2015 / 18:22

Tags