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/

관련 정보