在像10.11.12.123
这样的IP地址的计算机上,我有一个文件夹document
。我想使用shell将该文件夹复制到我的本地文件夹/home/my-pc/doc/
。
我试过这样的:
scp -r smb:10.11.12.123/other-pc/document /home/my-pc/doc/
但它不起作用。
因此,您可以使用以下命令来复制文件。
scp -r <source> <destination>
(-r
:递归复制整个目录)
例如:
scp -r [email protected]:/other-pc/document /home/my-pc/doc
要确定位置,您可以使用pwd
命令,例如:
kasun@kasunr:~/Downloads$ pwd
/home/kasun/Downloads
如果您要登录B,则要从B复制到A:然后
scp /source username@a:/destination
如果你想登录A:那么你想要从B复制到A.
scp username@b:/source /destination
除了评论之外,当您查看Linux上的主机到主机复制选项时,rsync
是迄今为止最强大的解决方案。它由SAMBA团队[1]带给您,并继续享受积极的发展。大多数发行版默认包含rsync
包。 (如果没有,你应该为你的发行版找到一个易于安装的软件包,或者你可以从rsync.samba.org下载它)。
rsync
用于主机到主机目录复制的基本用法是:
$ rsync -uav srchost:/path/to/dir /path/to/dest
-uav
只是递归复制-ua
只保留文件和目录时间和权限的新文件或更改文件,同时提供-v
详细输出。除非您已设置10.11.12.123
以允许公钥/私钥验证,否则系统将提示您输入ssh-keys
上的用户名/密码(请参阅:ssh-keygen
用于密钥生成)
如果你注意到,语法与scp
的语法基本相同,选项略有不同:(例如scp -rv srchost:/path/to/dir /path/to/dest
)。 rsync
默认使用ssh
进行安全传输,因此您需要确保sshd
在您的srchost上运行(在您的情况下为10.11.12.123
)。如果您有名称解析工作(或/etc/hosts
中10.11.12.123
的简单条目),您可以使用远程主机的主机名而不是远程IP。无论如何,您始终可以传输您感兴趣的文件:
$ rsync -uav 10.11.12.123:/other-pc/document /home/my-pc/doc/
注意:如果要复制目录本身,请不要在/
之后包含尾随的document
。如果你在/
(即document
)之后包含一个尾随的10.11.12.123:/other-pc/document/
,你告诉rsync
将document
的内容(即10.11.12.123:/other-pc/
下的文件和目录)复制到document
而不复制rsync
目录。
rsync
远远优于其他复制应用程序的原因是它提供了在本地和本地计算机与远程主机之间真正同步文件系统和目录树的选项。这意味着,在您的情况下,如果您使用/home/my-pc/doc/
将文件传输到10.11.12.123
然后更改文件或删除rsync
上的文件,您只需再次调用/home/my-pc/doc/
并将更改/删除反映在--delete
中。 (有关rsync --help
或man 1 rsync
中的详细信息,请查看rsync
选项的几种风格)
对于这些以及更多原因,值得花时间熟悉samba.org。它是任何Linux用户臀部口袋中的宝贵工具。希望这将解决您的问题,让您开始。
脚注
[1]“将Windows打开到更广阔的世界”的相同人员允许通过本机Windows服务器消息块(smb)协议在Windows / Linux主机之间进行无缝连接。 qazxsw poi
如果你提到的两个目录(document
和/home/my-pc/doc/
)在同一台10.11.12.123
机器上。
然后:
cp -ai document /home/my-pc/doc/
其他:
scp -r document/ [email protected]:/home/my-pc/doc/