这个答案一定存在于某个地方,因为它非常基础,但我找不到它。
我在本地计算机上有一个文件,我想将其复制到远程主机。我知道如何使用 scp,但如果我从本地主机向远程主机执行此操作,则会收到权限错误。我可以使用 root 权限登录远程主机,但我不知道如何识别我的本地计算机(我尝试了内部和外部 IP 地址,但两次都超时了)。这两种方法对我来说都适用(尽管理想情况下我想知道如何同时执行这两种方法!)
这是更好地学习 Linux 的练习的一部分,因此如果我没有提供必要的信息,请告诉我具体需要什么,我会尽力详细说明。
(附加问题:非常希望得到有关优秀 Linux 资源的任何推荐!)
答案1
这是确切地创建的目的是什么rsync
!只要您有远程计算机的 SSH 访问权限,并且远程计算机已rsync
安装,那么您可以:
rsync -avz /path/to/local/file username@host:/destination/path
这将通过 SSH 连接到host
as username
,启动私有rsync
守护程序,然后通过加密的 SSH 隧道将本地文件复制到远程位置。您还可以先指定远程位置,然后指定本地位置,以将远程文件复制到本地系统。如果您指定要复制的文件夹,它将复制该文件夹及其所有内容。
旗帜分类:
-a
“存档”——递归复制,并尽可能保留属性/权限。-v
“详细”- 复制后打印出每个文件名-z
“压缩” - 数据在网络上传输时使用 gzip 压缩。传输速度更快,带宽更低,但 CPU 处理能力更强。
如果您正在传输大文件,该--progress
选项可能也会有用。
答案2
ssh username@remotehost tee /home/user/example.file < ./example.local.file
它的作用是:
- 读入本地文件的内容
./example.local.file
remotehost
以用户身份通过 SSH 登录username
- 发射
tee
在远程主机上 - 并指示它将得到的输入放入
/home/user/example.file
优点:
- 简单的
缺点:
- 覆盖整个文件,无论远程文件的状态如何
- 这也意味着整个文件将始终通过网络传输
tee
将回显收到的所有内容;对于二进制文件来说,这可能是不理想的