我刚刚开始学习如何使用 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
来自以下事实:您的 shell 的交互式 shell 启动文件正在远程主机上被调用(您的~/.bashrc
文件,如果您使用的是bash
),并且您正在其中执行需要终端的操作。
您可以编辑远程计算机上的 shell 启动文件并在顶部附近插入以下内容:
[ ! -t 0 ] && return
~/.bashrc
对于标准输入流未连接到终端的所有 shell 会话,这将停止执行 例如。
答案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“详细”(-vv将提供更详细的信息)
- -e "ssh options" - 指定 ssh 作为远程 shell
- -a - “存档模式” - 它保留权限(所有者、组)、时间、符号链接和设备
- -z 在传输过程中压缩文件数据
- -P 显示传输过程中的进度
CMIIW