当我用ssh连接到远程服务器后,将所有文件从一个目录复制到我机器上的本地目录的命令是什么?
当前回答
从您的本地机器:
rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage
使用非标准ssh端口的本地机器:
rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path
或者从远程主机,假设你真的想以这种方式工作,并且你的本地机器正在侦听SSH:
rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage
关于我常用的开关,请参阅man rsync。
其他回答
我认为最好从您的本地计算机复制文件,因为如果文件数量或文件大小非常大,如果您当前的ssh会话丢失(管道破裂或其他),复制过程可能会中断。
如果您已经配置ssh密钥连接到远程服务器,您可以使用以下命令:
rsync -avP -e "ssh -i /home/local_user/ssh/key_to_access_remote_server.pem" remote_user@remote_host.ip:/home/remote_user/file.gz /home/local_user/Downloads/
其中v选项为——verbose, a选项为——archive -存档模式,P选项与——partial -保留部分传输的文件相同,e选项为——rsh=COMMAND -指定要使用的远程shell。
Rsync手册
如果您有SSH访问权限,则不需要先SSH再复制,只需从目标使用安全复制(SCP)即可。
scp user@host:/path/file /localpath/file
支持通配符,所以
scp user@host:/path/folder/* /localpath/folder
将复制该文件夹中的所有远程文件。如果复制多个目录。
注意-r也会复制所有子文件夹和内容。
从您的本地机器:
rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage
使用非标准ssh端口的本地机器:
rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path
或者从远程主机,假设你真的想以这种方式工作,并且你的本地机器正在侦听SSH:
rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage
关于我常用的开关,请参阅man rsync。
推荐文章
- 警告:未受保护的私钥文件!当尝试SSH到Amazon EC2实例时
- 如何设置ssh超时时间?
- 如何在SSH上使用Sublime
- 使用Git GUI或SSH -keygen的SSH私钥权限太开放
- 在gitlab上被拒绝许可(公钥)
- 使用脚本自动输入SSH密码
- 在Linux中是否有办法继续中断的scp(安全拷贝)命令进程?
- 为什么SSH远程命令得到的环境变量比手动运行时少?
- 将Keypair添加到现有的EC2实例中
- 如何解决“sign_and_send_pubkey:签名失败:代理拒绝操作”?
- 对于未设置密码的OpenSSH私钥,如何添加密码?
- 'heroku'似乎不是一个git存储库
- 存储库访问被拒绝。通过部署键的访问是只读的
- 如何防止Linux操作系统关闭SSH客户端后后台进程被停止
- 多个GitHub帐户和SSH配置