从Linux上的另一台计算机复制目录

时间:2015-06-23 04:45:39

标签: linux scp

在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/ 

但它不起作用。

4 个答案:

答案 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/hosts10.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/选项的几种风格,了解--deletersync --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/