あるサーバーから別のサーバーにファイルをコピーしようとしているので、私はrsyncの使い方を学び始めています。次のコマンドを使用しています。
rsync -avzP [email protected]:/public_html/abc/ /www/abc
他のサーバーのパスワードを入力すると、次のメッセージが表示されます。
stdin: is not a tty
receiving incremental file list
rsync: change_dir "/public_html/abc" failed: No such file or directory (2)
sent 8 bytes
received 101 bytes 8.72 bytes/sec total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1655) [Receiver=3.1.1]
ただし、ディレクトリabcは存在します。参照できます。名前にスペースが含まれていません。
これによって何が引き起こされるかについてのアイデアはありますか?
たとえば、接続の詳細を追加する必要があります。 SSHの場合は--rsh=ssh
を使用します。
試してください:
rsync -avzP --rsh=ssh [email protected]:/public_html/abc/ /www/abc
パスが正しいことを確認してください。これらのパスは絶対パスですか、相対パスですか:/public_html/abc/
、/www/abc
?
このエラーは、リモートシステムに/public_html/abc
ディレクトリがないために発生します。
comments によると、ソースディレクトリは実際にはパス/public_html
ではなく、ユーザーのホームディレクトリにあります。
したがって:
rsync -avzP [email protected]:public_html/abc/ /www/abc
ここでは、ファイルシステムのルートではなく、ユーザーのホームディレクトリにあるpublic_html/abc
にアクセスします。
警告stdin: is not a tty
は、インタラクティブシェル用のシェルの起動ファイルがリモートホスト(bash
を使用している場合は~/.bashrc
ファイル)で呼び出され、その中で端末を必要とする何かをする。
リモートマシンのシェルスタートアップファイルを編集し、次の行を先頭近くに挿入できます。
[ ! -t 0 ] && return
これにより、たとえば~/.bashrc
その時点で、標準入力ストリームが端末に接続されていないすべてのシェルセッション。
除去されたDockerイメージを使用する場合、SSHが常にインストールされるわけではなく、このエラーも発生します。
apt-get install openssh-client