web-dev-qa-db-ja.com

rsyncにリモートシステムでログファイルを作成させることは可能ですか?

rsyncを使用して、sshアクセスできるリモートコンピューターのハードドライブに接続してバックアップしています。 rsyncは正しく接続しています。動作しているコードは

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

rsyncにその--log-fileオプションを使用してリモートシステムでログファイルを生成する方法があるかどうか疑問に思っています(ファイルを同じリモートハードドライブに配置したい)私はバックアップしています)。ログファイルに使用するリモートパスを指定すると(たとえば、--log-file="path/on/remote/computer"を使用)、ローカルシステムでパスを探しているようです。 --log-file=ssh_username@ssh_ip_address:path/on/remote/systemも試しましたが、うまくいきませんでした。

これは可能ですか、それともローカルシステムでログファイルを作成してからリモートシステムにscpする必要がありますか?

ローカルシステムとリモートシステムの両方でUbuntu12.04が実行されています。

2
J L

他のマシンに対してrsyncを実行し、その後scpコマンドを実行して、ローカルで生成されたログファイルをリモートシステムに保存します。

rsyncingファイル+ログ

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

確認

% 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

ログをリモート側に連結する

rsyncからの結果をリモートファイルに連結したい場合は、複合コマンドを使用できます( bashのマニュアルページを参照 )。ここでは、rsyncをparensでラップし、その出力をパイプを介してsshにパイプしています。

(rsync ...) | ssh ...

最初のファイルがコピーされました

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

最初のコピーを確認する

% 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番目のファイルがコピーされました

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

2番目のコピーを確認する

% 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

注:sshの右側にあるファイルに特に注意してください。 $HOMEパスには、$HOMEの前にスラッシュ()があることに注意してください。これは意図的なものです。ローカルホストのbashシェルが展開しないように、$HOMEをエスケープする必要があります。

1
slm