한 서버에서 다른 서버로 파일을 복사하려고 하기 때문에 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