我需要从我有权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
您可以使用tar
和ssh
。
举个例子,上传通过 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