暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux常用跨主机传输文件的工具

orasky的星星点点 2019-12-01
1897

转眼间距离上一次发表文章已经足足一年了,上一篇文章发表在2018年的感恩节。

在这次的文章里,主要是讲述Linux系统比较常用跨主机传输文件的工具,

分别是ftp、sftp(expect)和scp三种。它们各自有各自的用处。

1、ftp工具只需在一端(源端或者目标端)配置ftp服务,就可以使用,一般传输较集中,量多而且总量大的文件,可以放后台传输,执行稳定??

2、sftp(expect)工具需要安装tcl与expect,可只在一端安装,一般传输较集中,量多而且总量大的文件,可以放后台传输,执行稳定;

3、一般主机间ssh的22端口开通,可以直接传输,一般传输文件量少操作简易,也可放后台,但总是执行命令的会话挂死,传输就终止。

下面让我们一起看看它们的使用方法。


一、ftp方式传输

1、安装与查看ftp服务:

[root@test12c1 ~]#vsftpd -v

vsftpd: version 3.0.2

[root@test12c1 ~]# 


2、安装ftp服务:

yum -y install vsftpd


3、设置ftp匿名登录:

修改vsftpd.conf文件

vi etc/vsftpd/vsftpd.conf

把anonymous_enable=YES ,改为NO ,然后重启vsftpd


4、重启配置并查看ftp服务进程:

systemctl vsftpd restart

# 查看vsftpd服务的状态

systemctl status vsftpd.service

# 设置开机启动

systemctl enable vsftpd.service

#提示,我自己使用的是Linux 7.x以上的版本。


5、使用ftp传输文件

[oracle@test12c1 soft]$ cat >getfiles.sh

#!/bin/sh

HOST='192.168.163.2'

USER='oracle'

PASSWD='oracle'

FTP_DIR='/soft'

FTP_TARGET_DIR='/soft'


echo "  " >> ftp.log

echo "  " >> ftp.log

echo "============== ftp begin ======================" >> ftp.log

echo ">>> Begin at `date` " >> ftp.log

echo "===============================================" >> ftp.log

echo "  " >> ftp.log


ftp -v -n $HOST  <<END_SCRIPT >> ftp.log

quote USER $USER

quote PASS $PASSWD

prompt

lcd  $FTP_DIR

cd $FTP_TARGET_DIR

pwd

bin

mget p133*

quit

END_SCRIPT


echo "  " >> ftp.log

echo "============== ftp end ======================" >> ftp.log

echo ">>> End at `date` " >> ftp.log

echo "=============================================" >> ftp.log

echo "  " >> ftp.log

exit 0

#编辑以上sh脚本。

[oracle@test12c1 soft]$ ls -l get*

-rw-rw-r--  1 oracle oracle   703 Dec  1 10:20 getfiles.sh

[oracle@test12c1 soft]$ nohup sh getfiles.sh >getfiles.log &

[oracle@test12c1 soft]$ more ftp.log

  

============== ftp begin ======================

>>> Begin at Sun Dec  1 10:20:43 PST 2019 

=============================================== 

Connected to 192.168.163.2 (192.168.163.2).

220 (vsFTPd 3.0.2)

331 Please specify the password.

230 Login successful.

Interactive mode off.

Local directory now soft

250 Directory successfully changed.

257 "/soft"

200 Switching to Binary mode.

local: p13390677_112040_Linux-x86-64_1of7.zip remote: p13390677_112040_Linux-x86-64_1of7.zip

227 Entering Passive Mode (192,168,163,2,177,114).

150 Opening BINARY mode data connection for p13390677_112040_Linux-x86-64_1of7.zip (1395582860 bytes).

226 Transfer complete.

1395582860 bytes received in 38.2 secs (36509.92 Kbytes/sec)

local: p13390677_112040_Linux-x86-64_2of7.zip remote: p13390677_112040_Linux-x86-64_2of7.zip

227 Entering Passive Mode (192,168,163,2,255,6).

150 Opening BINARY mode data connection for p13390677_112040_Linux-x86-64_2of7.zip (1151304589 bytes).

226 Transfer complete.

1151304589 bytes received in 36.5 secs (31526.71 Kbytes/sec)

local: p13390677_112040_Linux-x86-64_3of7.zip remote: p13390677_112040_Linux-x86-64_3of7.zip

227 Entering Passive Mode (192,168,163,2,176,131).

150 Opening BINARY mode data connection for p13390677_112040_Linux-x86-64_3of7.zip (1205251894 bytes).

226 Transfer complete.

1205251894 bytes received in 53.5 secs (22516.44 Kbytes/sec)

221 Goodbye.

============== ftp end ======================

>>> End at Sun Dec  1 10:22:51 PST 2019 

=============================================

[oracle@test12c1 soft]$ 



二、sftp方式传输

1、expect安装配置

expect依赖于tcl,而linux系统里一般不自带安装tcl,所以需要手动安装,

下载工具介质,地址如下:

下载:expect-5.43.0.tar和tcl8.4.11-src.tar

下载地址:https://pan.baidu.com/s/1kVyeLt9

提取密码:af9p

将expect和tcl的软件包下载放到/usr/local/src目录下


(1)解压tcl,进入tcl解压目录,然后进入unix目录进行编译安装:

[root@test12c1 src]# tar -zvxf tcl8.4.11-src.tar.gz

[root@test12c1 src]# cd tcl8.4.11/unix

[root@test12c1 unix]# ./configure

[root@test12c1 unix]# make && make install


(2)安装expect:

[root@test12c1 src]# tar -zvxf expect-5.43.0.tar.gz

[root@test12c1 src]# cd expect-5.43.0

[root@test12c1 expect-5.43.0]# ./configure --with-tclinclude=/usr/local/src/tcl8.4.11/generic --with-tclconfig=/usr/local/lib/

[root@test12c1 expect-5.43.0]# make && make install


(3)安装完成后进行测试:

[root@test12c1 ~]# expect

expect1.1>

expect1.1>

expect1.3> exit

[root@test12c1 expect-5.43]# 

[root@test12c1 ~]# which expect

/usr/local/bin/expect

[root@test12c1 ~]# 


2、使用sftp传输文件

[oracle@test12c1 soft]$ cat >getfile_sftp.sh

#/usr/local/bin/expect -f

set userna [lindex $argv 0]

set passwd [lindex $argv 1]

set ip [lindex $argv 2]

set dir [lindex $argv 3]

spawn sftp $userna@$ip

expect {

  "(yes/no)?" {send "yes\r"; expect_continue}

  "*assword:" {send "$passwd\r"}

}

set timeout -1

expect "sftp>"

send "cd $dir\r"

expect "sftp>"

send "get p133*\r"

expect "sftp>"

send "bye\r"

[oracle@test12c1 soft]$ 

[oracle@test12c1 soft]$ nohup usr/local/bin/expect getfile_sftp.sh oracle oracle 192.168.163.2 soft/ >getfile_sftp.log &

[1] 49222

[oracle@test12c1 soft]$ nohup: ignoring input and redirecting stderr to stdout


[oracle@test12c1 soft]$[1]+  Done                    nohup usr/local/bin/expect getfile_sftp.sh oracle oracle 192.168.163.2 soft/ > getfile_sftp.log


[oracle@test12c1 soft]$ ls -lrt

total 3664256

-rw-rw-r--. 1 oracle oracle        353 Dec  1 00:53 getfile_sftp.sh

-rw-r--r--. 1 oracle oracle 1395582860 Dec  1 00:55 p13390677_112040_Linux-x86-64_1of7.zip

-rw-r--r--. 1 oracle oracle 1151304589 Dec  1 00:56 p13390677_112040_Linux-x86-64_2of7.zip

-rw-r--r--. 1 oracle oracle 1205251894 Dec  1 00:57 p13390677_112040_Linux-x86-64_3of7.zip

-rw-rw-r--. 1 oracle oracle      45746 Dec  1 00:57 getfile_sftp.log


[oracle@test12c1 soft]$ cat  getfile_sftp.log

spawn sftp oracle@192.168.163.2

oracle@192.168.163.2's password: 

Connected to 192.168.163.2.

sftp> cd soft/

sftp> get p133*

Fetching soft/p13390677_112040_Linux-x86-64_1of7.zip to p13390677_112040_Linux-x86-64_1of7.zip

/soft/p13390677_112040_Linux-x86-64_1of7.zip                                                                                                                                                              100% 1331MB  21.1MB/s   01:03    

Fetching /soft/p13390677_112040_Linux-x86-64_2of7.zip to p13390677_112040_Linux-x86-64_2of7.zip

/soft/p13390677_112040_Linux-x86-64_2of7.zip                                                                                                                                                              100% 1098MB  13.1MB/s   01:24    

Fetching /soft/p13390677_112040_Linux-x86-64_3of7.zip to p13390677_112040_Linux-x86-64_3of7.zip

/soft/p13390677_112040_Linux-x86-64_3of7.zip                                                                                                                                                              100% 1149MB  26.7MB/s   00:43    

sftp> [oracle@test12c1 soft]$ 

#这里附上sftp传输过程的日志输出。



三、scp方式传输

1、scp传输文件

[oracle@susource soft]$ scp p133* 192.168.163.133:/soft

The authenticity of host '192.168.163.133 (192.168.163.133)' can't be established.

ECDSA key fingerprint is bb:1d:61:84:01:0e:08:85:7e:b1:c9:96:f2:1f:ed:55.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.163.133' (ECDSA) to the list of known hosts.

oracle@192.168.163.133's password: 

p13390677_112040_Linux-x86-64_1of7.zip                                                                                                                                                                      7%   95MB  56.3MB/s   00:21 ETA^Z

[1]+  Stopped                 scp p133* 192.168.163.133:/soft


2、暂停传输作业

[oracle@susource soft]$Ctrl + z


3、后台挂起传输作业


[oracle@susource soft]$ bg

[1]+ scp p133* 192.168.163.133:/soft &

[oracle@susource soft]$ 


4、查看scp传输的作业或进程

[oracle@susource soft]$ ps -ef |grep scp

oracle     3512   3436 17 11:10 pts/2    00:00:06 scp p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip p13390677_112040_Linux-x86-64_3of7.zip 192.168.163.133:/soft

oracle     3513   3512 10 11:10 pts/2    00:00:04 /usr/bin/ssh -x -oForwardAgent=no -oPermitLocalCommand=no -oClearAllForwardings=yes -- 192.168.163.133 scp -d -t /soft

oracle     3530   3436  0 11:11 pts/2    00:00:00 grep --color=auto scp

[oracle@susource soft]$ jobs

[1]+  Running                 scp p133* 192.168.163.133:/soft &

[oracle@susource soft]$ 

提示:scp虽然可以挂后台执行,但是只要执行scp命令的会话挂死,scp传输作业也会被终止。


最后修改时间:2019-12-02 10:06:20
文章转载自orasky的星星点点,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论