在IP地址为10.11.12.123
的计算机上,我有一个文件夹document
。我想使用shell将该文件夹复制到我的本地文件夹/home/my-pc/doc/
。
我试过这样:
scp -r smb:10.11.12.123/other-pc/document /home/my-pc/doc/
但它不起作用。
答案 0 :(得分:12)
因此,您可以使用以下命令复制文件。
scp -r <source> <destination>
(-r
:递归复制整个目录)
例如:
scp -r user@10.11.12.123:/other-pc/document /home/my-pc/doc
要确定您可以使用pwd
命令的位置,例如:
kasun@kasunr:~/Downloads$ pwd
/home/kasun/Downloads
答案 1 :(得分:7)
如果你想登录B,你想要从B复制到A:那么
scp /source username@a:/destination
如果您要登录A:然后
,则要从B复制到A.scp username@b:/source /destination
答案 2 :(得分:2)
除了评论之外,当您在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
进行安全传输,因此您需要确保在您的srchost上运行sshd
(在您的情况下为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
复制内容(即文件和({1}}到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
。它是任何Linux用户臀部口袋中的宝贵工具。希望这可以解决您的问题,让您开始。
<强>脚注强>
[1]同样的人&#34;打开Windows到更广阔的世界&#34;允许通过本机Windows服务器消息块(smb)协议在Windows / Linux主机之间建立无缝连接。 samba.org
答案 3 :(得分:1)
如果您提到的两个目录(document
和/home/my-pc/doc/
)位于同一台10.11.12.123
计算机上。
然后:
cp -ai document /home/my-pc/doc/
否则:
scp -r document/ root@10.11.12.123:/home/my-pc/doc/