あるサーバーから別のサーバーにファイルをコピーしたいので、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ディレクトリが存在するため、参照できます。名前にスペースがありません。
これが原因になる可能性があるアイデアはありますか?
答え1
このエラーは、/public_html/abc
リモートシステムにディレクトリがないために発生します。
~によるとコメント、ソースディレクトリは実際にはパスではなくユーザーのホームディレクトリにあります/public_html
。
だから:
rsync -avzP [email protected]:public_html/abc/ /www/abc
ここでは、public_html/abc
ファイルシステムのルートではなくユーザーのホームディレクトリにアクセスします。
警告は、シェルの対話型シェル起動ファイルがリモートホスト(使用している場合はファイル)から呼び出され、その中で端末が必要な操作を実行しているというstdin: is not a tty
事実に由来します。~/.bashrc
bash
リモートシステムでシェルの起動ファイルを編集し、上部付近に次を挿入できます。
[ ! -t 0 ] && return
~/.bashrc
たとえば、標準入力ストリームが端末に接続されていないすべてのシェルセッションに対する実行は停止されます。
答え2
たとえば、接続の詳細を追加する必要があります。 SSHで使用します--rsh=ssh
。
努力する:
rsync -avzP --rsh=ssh [email protected]:/public_html/abc/ /www/abc
パスが正しいことを確認してください。次のパスは絶対パスですか、相対パスですか?/public_html/abc/
、/www/abc
?
答え3
削除されたDockerイメージを使用すると、SSHが常にインストールされるわけではなく、次のエラーも発生します。
apt-get install openssh-client
答え4
まず、SSHユーザーにフォルダに書き込む権限があることを確認してください。
/www/abc
次のコマンドを実行します。
rsync -avzP -e ssh /www/abc user@destinationFolderPath
ノート
- -v "verbose" (-vv はより詳細な情報を提供します)
- -e "ssh options" - ssh をリモートシェルとして指定します。
- -a - "アーカイブモード" - 権限(所有者、グループ)、時間、シンボリックリンク、およびデバイスを保存します。
- -z 転送中のファイルデータ圧縮
- -P 転送中の進捗状況を表示します。
CMIIW