Rsyncはリスナーでファイルまたはディレクトリを見つけることができません。 SSH指定による権限の問題が原因である可能性があります(表示されているポートに必要です)。

Rsyncはリスナーでファイルまたはディレクトリを見つけることができません。 SSH指定による権限の問題が原因である可能性があります(表示されているポートに必要です)。

いくつかのファイルをリモートサーバーに同期したいと思います。

頑張った

rsync -rav --delete -e 'ssh -p "$SSH_PORT" "$SSH_USERNAME"@"$SSH_HOST"' ./ /home/"$SSH_USERNAME"/src/

エラーが発生しました。

rsync: [Receiver] mkdir "/home/SSH_USERNAME/src" failed: No such file or directory (2)

この形式を使用する-e 'ssh -p理由は次のとおりです。非標準のSSHポートを指定するための推奨方法特定のサーバーについて。

しかし心配になる他の答えに基づいてこれにより、奇妙な権限が発生し、rsync書き込みがブロックされる可能性があります。

リモートサーバーには適切な権限を持つ特定の場所があります。

リモートサーバーから

SSH_USERNAME@SSH_HOST:~$ pwd
/home/SSH_USERNAME
SSH_USERNAME@SSH_HOST:~$ ls -al
drwxr-xr-x 6 SSH_USERNAME SSH_USERNAME 4096 Jun 14 03:44 .
drwxr-xr-x 4 root       root       4096 Jun 13 23:18 ..
-rw------- 1 SSH_USERNAME SSH_USERNAME  221 Jun 14 03:44 .bash_history
-rw-r--r-- 1 SSH_USERNAME SSH_USERNAME  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 SSH_USERNAME SSH_USERNAME 3771 Apr  4  2018 .bashrc
drwx------ 2 SSH_USERNAME SSH_USERNAME 4096 Jun 14 00:44 .cache
drwx------ 3 SSH_USERNAME SSH_USERNAME 4096 Jun 14 00:44 .gnupg
-rw-r--r-- 1 SSH_USERNAME SSH_USERNAME  807 Apr  4  2018 .profile
drwxrwxr-x 3 SSH_USERNAME SSH_USERNAME 4096 Jun 14 19:53 src
drwx------ 2 SSH_USERNAME SSH_USERNAME 4096 Jun 14 00:52 .ssh
SSH_USERNAME@SSH_HOST:~$ cd ..
SSH_USERNAME@SSH_HOST:~$ ls -al
drwxr-xr-x  4 root       root       4096 Jun 13 23:18 .
drwxr-xr-x 22 root       root       4096 Jun 13 22:55 ..
drwxr-xr-x  5 caleb      caleb      4096 Jun 14 01:15 caleb
drwxr-xr-x  6 SSH_USERNAME SSH_USERNAME 4096 Jun 14 03:44 SSH_USERNAME

非標準のSSHポートを使用してディレクトリをサーバーに同期するにはどうすればよいですか?

もし:

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.6 LTS
Release:    18.04
Codename:   bionic

ベストアンサー1

他の変更がなくてもrsync構文に問題があります。次に変更することをお勧めします。

rsync -rav --delete -e 'ssh -p "$SSH_PORT"' ./ "$SSH_USERNAME"@"$SSH_HOST":/home/"$SSH_USERNAME"/src/

またman 5 ssh_config、特定のホストアドレス、ユーザー名、ポート(およびSSH IDキーなどの他のパラメータも可能です)を便利な別名に関連付けるSSH「別名」を構築する方法をお読みください。その後、SSHを介してそのニックネームに接続するたびに、sshこれらの特定のパラメータを使用して接続します。

あなたのものから~/.ssh/config以下を追加します。

Host Nickname
  Hostname $SSH_HOST
  Port $SSH_PORT
  User $SSH_USERNAME

どこ:

Nickname is a convenient name of your choice
$SSH_HOST is the proper name, or perhaps an IP
$SSH_PORT is the port number
$SSH_USERNAME is the desired username

たとえば、

Host foobar
  Hostname foobar.example.com
  Port 2222
  User myusername

これでrsync構文は次のようになります。

rsync -rav --delete ./ foobar:/home/"$SSH_USERNAME"/src/

$SSH_USERNAMEユーザーのホームディレクトリがfoobarすでにホストにある場合は、コマンドのリモートパスを/home/$SSH_USERNAME短縮できます。rsync

rsync -rav --delete ./ foobar:src/

おすすめ記事