É possível fazer o rsync criar um arquivo de log em um sistema remoto?

2

Estou usando rsync para conectar e fazer backup em um disco rígido em um computador remoto ao qual tenho acesso ssh. rsync está se conectando corretamente. O código que está funcionando é

rsync -av --progress -e "ssh -p port_number -i key/file/path" \
  "path/on/local/computer/to/back/up" \
  ssh_username@ssh_ip_address:"'path/on/remote/computer/to/back/up/to'"

Eu estou querendo saber se existe uma maneira de obter rsync para usar sua opção --log-file para gerar um arquivo de log no sistema remoto (eu quero que o arquivo esteja no mesmo disco rígido que eu) m fazendo backup para). Sempre que eu der um caminho remoto para o arquivo de log (por exemplo, com --log-file="path/on/remote/computer" ), parece estar procurando o caminho no meu sistema local. Eu até tentei --log-file=ssh_username@ssh_ip_address:path/on/remote/system , mas não funcionou.

Isso é possível, ou eu preciso fazer um arquivo de log no sistema local e, em seguida, scp para o sistema remoto?

Ambos os sistemas local e remoto estão executando o Ubuntu 12.04.

    
por J L 02.02.2013 / 20:22

1 resposta

1

Eu faria o rsync na outra máquina e depois executaria um comando scp depois para colocar o arquivo de log gerado localmente no sistema remoto onde você gostaria que fosse mantido.

arquivo rsyncing + log

% rsync -avz -e 'ssh' $HOME/sample.sh remotemach:~ \
                --log-file=$HOME/rsync.log ; scp $HOME/rsync.log remotemach:~

confirmando

% ls -l ~/rsync.log ~/sample.sh
-rwxrwxr-x 1 saml saml 10059 Oct 15 15:20 /home/saml/sample.sh
-rw-r--r-- 1 saml saml   192 Feb  2 14:57 /home/saml/rsync.log

% ssh remotemach "ls -l sample.sh rsync.log"
-rwxrwxr-x 1 saml saml 10059 Oct 15 15:20 sample.sh
-rw-r--r-- 1 saml saml   192 Feb  2 14:54 rsync.log

concatenando o log para o lado remoto

Se você quiser concatenar os resultados de rsync para um arquivo remoto, você pode usar um comando composto ( veja a página man do bash ). Aqui estou envolvendo rsync com parens e canalizando sua saída para ssh através de um pipe, ou seja:

(rsync ...) | ssh ...

1º arquivo copiado

% (rsync -avz -e'ssh' $HOME/sample1.sh remotemach:~) \
                    | ssh remotemach "cat >> \$HOME/rsync.log"

confirmar a primeira cópia

% ssh remotemach "ls -l sample*.sh rsync.log"
-rw-r--r-- 1 saml saml   133 Feb  2 19:49 rsync.log
-rwxrwxr-x 1 saml saml 10059 Feb  2 19:25 sample1.sh

2º arquivo copiado

% (rsync -avz -e'ssh' $HOME/sample2.sh remotemach:~) \
                    | ssh remotemach "cat >> \$HOME/rsync.log"

confirma a segunda cópia

% ssh remotemach "ls -l sample*.sh rsync.log"
-rw-r--r-- 1 saml saml   266 Feb  2 20:03 rsync.log
-rwxrwxr-x 1 saml saml 10059 Feb  2 19:25 sample1.sh
-rwxrwxr-x 1 saml saml 10059 Feb  2 19:25 sample2.sh

NOTA: Preste especial atenção ao arquivo no lado direito do ssh . Observe que o caminho $HOME tem uma barra () na frente do $HOME . Isso é de propósito. É necessário escapar do $HOME para que o shell bash do host local não o expanda.

    
por 02.02.2013 / 21:03