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

问题描述 投票:3回答:4

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

但它不起作用。

linux scp
4个回答
12
投票

因此,您可以使用以下命令来复制文件。

scp -r <source> <destination>

-r:递归复制整个目录)

例如:

scp -r [email protected]:/other-pc/document /home/my-pc/doc

要确定位置,您可以使用pwd命令,例如:

kasun@kasunr:~/Downloads$ pwd
/home/kasun/Downloads

7
投票

如果您要登录B,则要从B复制到A:然后

scp /source username@a:/destination

如果你想登录A:那么你想要从B复制到A.

scp username@b:/source /destination

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进行安全传输,因此您需要确保sshd在您的srchost上运行(在您的情况下为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/,你告诉rsyncdocument的内容(即10.11.12.123:/other-pc/下的文件和目录)复制到document而不复制rsync目录。

rsync远远优于其他复制应用程序的原因是它提供了在本地和本地计算机与远程主机之间真正同步文件系统和目录树的选项。这意味着,在您的情况下,如果您使用/home/my-pc/doc/将文件传输到10.11.12.123然后更改文件或删除rsync上的文件,您只需再次调用/home/my-pc/doc/并将更改/删除反映在--delete中。 (有关rsync --helpman 1 rsync中的详细信息,请查看rsync选项的几种风格)

对于这些以及更多原因,值得花时间熟悉samba.org。它是任何Linux用户臀部口袋中的宝贵工具。希望这将解决您的问题,让您开始。

脚注

[1]“将Windows打开到更广阔的世界”的相同人员允许通过本机Windows服务器消息块(smb)协议在Windows / Linux主机之间进行无缝连接。 qazxsw poi


1
投票

如果你提到的两个目录(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/

© www.soinside.com 2019 - 2024. All rights reserved.