Ist es möglich, mit rsync eine Protokolldatei auf einem Remote-System zu erstellen?

2

Ich verwende rsync, um eine Verbindung zu einer Festplatte auf einem Remotecomputer herzustellen und eine Sicherungskopie davon zu erstellen, auf die ich ssh-Zugriff habe. rsyncist richtig angeschlossen. Der Code, der funktioniert, ist

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'"

Ich frage mich, ob es eine Möglichkeit gibt, rsyncseine --log-fileOption zum Generieren einer Protokolldatei auf dem fernen System zu verwenden (ich möchte, dass sich die Datei auf derselben fernen Festplatte befindet, auf der ich ein Backup mache). Jedes Mal, wenn ich ihm einen Remote-Pfad für die Protokolldatei gebe (zum Beispiel mit --log-file="path/on/remote/computer"), scheint er nach dem Pfad auf meinem lokalen System zu suchen. Ich habe es sogar versucht --log-file=ssh_username@ssh_ip_address:path/on/remote/system, aber es hat nicht funktioniert.

Ist dies möglich, oder muss ich eine Protokolldatei auf dem lokalen System und dann scpauf dem Remote-System erstellen ?

Sowohl auf dem lokalen als auch auf dem Remote-System wird Ubuntu 12.04 ausgeführt.

J L
quelle
Welches Betriebssystem verwenden Sie? Es könnte relevant sein.
Terdon
@ terdon, ha, ich habe meinen Beitrag mit diesen Informationen bearbeitet, als du ihn kommentiert hast. Ich benutze Ubuntu 12.04 auf beiden Systemen.
JL

Antworten:

1

Ich würde das rsyncauf der anderen Maschine tun und dann einfach einen scpBefehl ausführen , um die lokal generierte Protokolldatei auf dem entfernten System abzulegen, auf dem sie aufbewahrt werden soll.

Synchronisierungsdatei + Protokoll

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

Bestätigung

% 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

Verknüpfen des Protokolls mit der Remote-Seite

Wenn Sie die Ergebnisse aus rsynceiner entfernten Datei zusammenfassen möchten , können Sie einen zusammengesetzten Befehl verwenden ( siehe bashs Manpage ). Hier wickle ich rsyncmit Parens und leite seine Ausgabe sshdurch eine Pipe, dh:

(rsync ...) | ssh ...

1. Datei kopiert

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

1. Kopie bestätigen

% 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. Datei kopiert

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

2. Kopie bestätigen

% 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

HINWEIS: Achten Sie besonders auf die Datei auf der rechten Seite des ssh. Beachten Sie, dass der $HOMEPfad einen Schrägstrich () vor dem hat $HOME. Dies ist absichtlich. Es ist notwendig, das zu maskieren, $HOMEdamit die Bash-Shell des lokalen Hosts sie nicht erweitert.

slm
quelle
@slm, das macht Sinn. Vielen Dank! Ich möchte die Protokolldatei an eine vorhandene Protokolldatei auf dem Remotecomputer anhängen. Kann scpeine Datei anhängen, anstatt sie zu überschreiben?
JL
Als ich meine Frage an @ slm weiter oben stellte ich fest ( siehe den Beitrag unter linuxquestions.org/questions/linux-newbie-8/append-file-681666/… ), dass so etwas cat localfile | ssh user@remoteserver "cat >> remotefile"funktionieren könnte.
JL
Ich habe die Antwort um ein Verkettungsbeispiel erweitert.
Slm
Mit der zusammengesetzten Befehlsmethode können Sie das erreichen, was Sie ursprünglich auch gefragt haben. Ich habe erst danach daran gedacht.
Slm