我正在编写一个 bash 脚本,通过 LAN 上的 ssh 从一台机器 rsync 到另一台机器。它给了我一个 link_stat 错误,并引用了一个我完全不确定来源的目录。
这个错误提示什么,这个路径在脚本中来自哪里?
备份文件夹的位置是/home/user/rsynctest/
#!/bin/bash
rsync -av ssh ../Backup/ 192.168.100.120:/media/storage1/Backup
错误...
sending incremental file list
rsync: link_stat "/home/user/rsynctest/Backup/ssh" failed: No such file or directory (2)
sent 270 bytes received 16 bytes 572.00 bytes/sec
total size is 23 speedup is 0.08
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.1]
答案1
您不需要告诉rsync
使用 ssh。当给定远程路径时,它将默认使用它。命令行上的“ssh”被解释为要复制的另一个文件路径。由于 rsync 进程无法找到该名称的文件,因此它会抱怨(然后继续复制给定的下一个路径)。
所以改变
rsync -av ssh ../Backup/ 192.168.100.120:/media/storage1/Backup
到
rsync -av ../Backup/ 192.168.100.120:/media/storage1/Backup
答案2
尝试使用以下内容,
rsync -av ../Backup/ -e ssh 192.168.100.120:/media/storage1/Backup
或者
rsync -ave ssh ../Backup/ 192.168.100.120:/media/storage1/Backup
不工作原因:
当您要用来ssh
传输文件时,您必须使用该-e
标志。从联机帮助页来看,
-e, --rsh=COMMAND 指定要使用的远程 shell
在这里,通过使用,-e ssh
您指定要通过 来连接到远程 shell ssh stream
。如果您想了解更多ssh
rsync 的工作原理,请检查以下 URL,