远程服务器是类似 FreeBSD 的系统,但未安装 rsync:
$ ssh [email protected] which rsync scp
Password:
rsync not found
/usr/local/bin/scp
$ rsync -a /ring/0/share/Archives_AudioVisuel/TEST [email protected]:/ifs/par-nas01/data/MPP/ADN_Archives/Audiovisuels/
Password:
zsh:1: command not found: rsync
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.2]
$
我尝试添加-e ssh
,但收到同样的错误,提示rsync
是not found
。
如果我尝试添加--rsync-path=/usr/local/bin/scp
但收到scp: illegal option -- -
错误。
我该如何rsync
对仅具有该工具的服务器执行操作scp
?
答案1
如果你无法在远程 FreeBSD 机器上安装软件,但可以在本地 Linux 机器上安装软件,你可以使用sshfs
作为一种解决方法。
mkdir my_mountpoint
# The pathname (here just a slash) indicates the root of the mounted FS.
sshfs admin@remote_machine:/ $_
该sshfs
命令启动/usr/libexec/sftp-server
命令在遥控器上FreeBSD 机器,预装二进制。现在,您可以使用挂载点,就像它在全局路径名命名空间中一样。请记住,${_}
shell 变量会扩展为上一个命令的最后一个参数。
rsync -a /ring/0/share/Archives_AudioVisuel/TEST \
${_}/ifs/par-nas01/data/MPP/ADN_Archives/Audiovisuels/
完成后,使用该fusermount
实用程序卸载 FUSE(用户空间中的文件系统)挂载。
fusermount -u my_mountpoint
恐怕这种方法不会满的不过,使用 rsync 的高效 Δ 复制算法。如果你正在同步视频档案,我想这应该不是太重要。