从没有 rsync 的远程服务器复制

从没有 rsync 的远程服务器复制

我需要从我有权ssh访问的 Ubuntu 远程服务器递归复制一个文件夹。我不想遵循符号链接,也不想复制权限/所有者/组,因为我的客户端系统(Ubuntu 也是如此)没有与服务器相同的用户。

rsync解决方案可能是最好的一种。但服务器没有rsync,我无法在那里安装;所以该命令给了我错误。

还有其他方法复制远程文件夹吗?

答案1

您可以使用scp -r在不同主机之间递归复制文件。你的语法可能是这样的scp -r user@Ubuntu-Server:/home/myuser ./from_Ubuntu_server

此外,您也许可以rsync使用 scp 将本地二进制文件上传到 Ubuntu 服务器,并将其添加--rsync-path=/home/myuser/rsync到您的原始rsync命令中,以便让您的客户端rsync知道rsync它应该在 Ubuntu 服务器上调用哪个命令。

答案2

如果您有使用权限保险丝在您的本地计算机上,安装sshfs包裹。 SSHFS 允许您通过普通文件系统访问来访问远程文件:它安装通过 SFTP 访问的目录树。您只需要在远程端具有 SFTP 访问权限(Ubuntu 上的 OpenSSH 默认启用此功能)。一旦远程目录被挂载,您就可以使用您选择的工具来操作文件,而不必关心它们是本地的还是远程的。

mkdir ~/net/remote-server
sshfs remote-server:/ ~/net/remote-server
rsync -a --no-copy-links ~/net/remote-server/remote/path/ /local/path/
fusermount -u ~/net/remote-server

答案3

您可以使用tarssh

举个例子,上传通过 ssh 将本地目录的内容somewhere_local复制到路径/somewhere

tar czf - -C ./somewhere_local . | ssh {yourserver} 'tar xzf - -C /somewhere'

或者,去下载通过 ssh 将远程目录的内容/somewhere发送到路径./somewhere_local

ssh {yourserver} "tar czf - -C /somewhere ." | tar xzf - -C somewhere_local

相关内容