일부 파일을 원격 서버에 동기화하고 싶습니다.
나는 노력했다
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/