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が実行されています。
他のマシンに対してrsync
を実行し、その後scp
コマンドを実行して、ローカルで生成されたログファイルをリモートシステムに保存します。
% 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
% (rsync -avz -e'ssh' $HOME/sample2.sh remotemach:~) \
| ssh remotemach "cat >> \$HOME/rsync.log"
% 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
をエスケープする必要があります。