如何在Linux之间复制文件及文件夹

本例中使用scp(secure copy)命令进行复制。scp命令适用于在Linux下进行远程拷贝文件。

     本例中以以下两台主机为例,主机信息如下。
     A主机:   IP:  192.168.1.103    系统版本:CentOS release 6.7
     B主机:   IP:   192.168.1.105   系统版本:Kali GNU/Linux Rolling

目录

查看主机配置

1.在A主机下输入“ifconfig”查看IP地址,本例中为192.168.1.103。

SCP1.png

2.在A主机下输入“cat /etc/issue”查看系统版本,本例中为CentOS release 6.7。

SCP2.png

3.在B主机下输入“ifconfig”查看IP地址,本例中为192.168.1.105。

SCP3.png

4. 在A主机下输入“cat /etc/issue”查看系统版本,本例中为Kali GNU/Linux Rolling。

SCP4.png

5.在A主机下输入"cd /tmp"进入tmp目录,并输入“ls”查看目录内容(此步骤可省略)。

SCP5.png

6.在B主机下输入"cd /tmp"进入tmp目录,并输入“ls”查看目录内容(此步骤可省略)。

SCP6.png

7.在B主机下输入“vi scptest.txt”并按回车键,新建一个名为scptest.txt的文件。

SCP7.png

8.任意输入内容并按ESC键,输入“:x”保存并退出。
   本例中输入“This is a test for scp”。

SCP8.png

9.在B主机/tmp命令下输入“ls”查看,发现已经新建了名为scptest.txt的文件。

SCP9.png

10.在A主机下输入“ping 192.168.1.105”并按回车键确定,保证网络通信正常,确认无误后按Ctrl+c停止此命令。

SCP10.png

从A主机下载B主机文件

11.输入“scp root@192.168.1.105:/tmp/scptest.txt /tmp/scptest.txt”并按回车键确定。
     此命令意思:使用scp命令,以root用户登录主机192.168.1.105并复制B主机/tmp目录下名为scptest.txt的文件,
                         将之复制到本机(A主机)/tmp目录下,文件名任为scptest.txt。

SCP11.png

12.如为此次连接此主机(B主机),则会出现如下提示,大致意思为无法确认公钥指纹为ec:09:f0:35:99:ed:8d:74:df:4c:df:c6:7e:4d:4a:8e的主机真实性,询问您是否继续。
    提示信息:The authenticity of host '192.168.1.105(192.168.1.105) can't be established.
                     RSA key fingerprint is ec:09:f0:35:99:ed:8d:74:df:4c:df:c6:7e:4d:4a:8e.
                     Are you sure you want to continue connecting (yes/no)?

SCP18.png

13.如您确认此公钥指纹真实有效则可输入“yes”继续,A主机将自动保存B主机的密钥指纹到$HOME/.ssh/known_hosts文件中。下次连接时将不会再次出现警告。
     提示信息:Warning: Permanently added ‘192.168.1.105’(RSA) to the list of known hosts.

SCP19.png

14.在“root@192.168.105's password:”后面输入B主机的用户(本例中为root)密码后将开始复制文件。
     注意:本例中因文件(scptest.txt)较小,故复制速度和时间均为0,复制大文件则可看到复制速度及时间。

SCP20.png

15.在A主机里输入“vi /tmp/scptest.txt”可查看新复制文件内容。

SCP21.png

16.在编辑器里可看到文件内容与B主机的源文件相同,为“This is a test for scp”。

SCP22.png

从A主机下载B主机文件夹

17.在A主机里输入“cp -r /root/Pictures/ /tmp/Pic”并按回车键将/root/Picturs/目录下所有文件复制到/tmp/Pic目录下。

SCP23.png

18.在A主机/tmp目录下输入“ls Pic/”查看/tmp/Pic/目录下的文件,内容为两个截屏图片文件。

SCP24.png

19.在B主机下输入“scp -r root@192.168.1.105:/tmp/Pic /tmp”并按回车键将A主机(192.168.1.105)/tmp/Pic目录下的文件复制到B主机/tmp目录下,
     输入A主机root用户密码即开始复制。
     注意:使用scp命令复制目录需加上“-r”参数。

SCP25.png

20.在B主机下输入“ls -l /tmp/Pic/”查看已复制文件。

SCP26.png

从A主机上传文件到B主机

21.在B主机/tmp目录下输入“mkdir upload”新建一个名为upload的文件夹。

SCP27.png

22.在A主机输入“scp /tmp/scptest.txt root@192.168.1.105:/tmp/upload/scptest.txt”命令将A主机/tmp目录下名为scptest.txt的文件上传到B主机(192.168.1.105)的/tmp/upload文件夹,并保持文件名为scptest.txt。
    注意:按回车键后提示输入B主机的root用户密码,输入正确密码后即开始上传。

SCP28.png

从A主机上传文件夹到B主机

23.同理在A主机输入“scp -r /tmp/Pic/ root@192.168.1.105:/tmp/upload”即可将文件夹上传。
     注意:上传文件夹需添加“-r”参数。

SCP29.png

故障排除

24.输入“scp root@192.168.1.105:/tmp/scptest.txt /tmp/scptest.txt”命令并按回车键确定提示“-bash: scp: command not found”。
     注意:此错误由未安装openssh引起。

SCP12.png

25.在CentOS/RHEL或者Fedora系统输入“yum install openssh-clients”并按回车键安装。
     注意:此处为openssh-clients。

SCP13.png

26.输入“y”即可开始安装。

SCP14.png

27.安装完毕后输入“service sshd status”查看sshd服务状态。

SCP15.png

28.在Ubuntu或者Debian系统下需输入“apt-get install openssh-client”并按回车键安装(本例中B主机已安装)。
     注意:此处为openssh-client,在client后面没有s。

SCP16.png

29.输入“service ssh start”启动ssh服务。
     注意:此处服务名为ssh,不是sshd。

SCP17.png

30.输入“scp root@192.168.1.105:/tmp/scptest.txt /tmp/scptest.txt”并按回车键确定,出现如下错误,则需在A主机和B主机上启动ssh或者sshd服务。
    错误提示:ssh: connect to host 192.168.1.105 port 22: Connection refused
    注意:使用scp命令需确保A主机和B主机均已启动ssh或者sshd服务。
              在CentOS/RHEL或者Fedora系统输入“service sshd start”或“systemctl start sshd”启动服务。
              在Ubuntu或者Debian系统下需输入“service ssh start”启动服务。

SCP30.png