scp大文件shell迁移

Posted shuowen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scp大文件shell迁移相关的知识,希望对你有一定的参考价值。

 

 

一  通常情况下,我门在同一台服务器拷贝数据最常用的命令便是cp,如果要在不同服务器之间拷贝的话可以用scp命令。

现在有两台服务器,需要把A服务器上的文件迁移到B服务器上,因为文件太大,不能一直开着shell,我们需要把scp后台运行,如果我们直接在scp命令后加入 & 的话,关闭shell会话窗时,复制就回停止,有不同的方法能让scp后台运行,下面我说下我用到的

我一开始的思路是 配置了 A免密登陆到B,在 scp后加入&实现,发现这样不行,在关闭终端后,scp会停止

scp -r /data/fileupload/  30.0.218.1:/upload &   发现不行 

这时想到shell脚本

技术分享图片

然后执行 

 #  nohup bash scp.sh &

这时关闭shell会话窗,重新打开;一个会话窗,发现scp进程还在 

用  df  -h 查看磁盘使用情况 ,发现一只在增加

 

其中遇到一个问题:

问题现象:使用ssh [email protected]命令连接服务器时,有时候会出现错误提示:Write failed:Broken pipe
 
问题原因:远程服务器网络连接不稳定导致这个会话中断,简单的方法就是使用ssh多尝试几次
 
解决方法:
1、客户端设置:~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:ServerAliveInterval 60
2、在服务器的 /etc/ssh/sshd_config 中添加如下的配置:ClientAliveInterval 60
3、在登录命令添加参数:ssh -o ServerAliveInterval=60 [email protected](一般一两次就登录上了)。

 

在使用nfs共享时候,卸载发现

umount.nfs: /mydata: device is busy

[[email protected] /]# umount /data/
umount.nfs: /mydata: device is busy
查看占用进程号:
[[email protected] /]# fuser -m -v /data/
                     用户     进程号 权限   命令
/mydata/:              root       41331 
                              www      41223 ..c.. su 
将上面的进程kill掉,再删除挂载。
[[email protected] /]# kill -9  41331 41223
[[email protected] /]# umount /data
[[email protected] /]#

 

另一种强制卸载方法   

# umount  -l  /data

 

注释:

-m参数表明指定的路径是一个挂载点显示所有使用指定文件系统的进程,后面可以跟挂载点,-v参数给出详细的输出

用下面这个命令可以将占用目录/dsg所有进程给kill掉:

$ fuser -m –k /data

这样umount: /data: device is busy这个问题就可以解决.

 

同时fuser 可以用来查找哪些进程正在使用指定的端口(network port).

 技术分享图片

 

 
fuser 常用场景

fuser通常被用在诊断系统的“resource busy”问题,通常是在你希望umount指定的挂载点得时候遇到。 如果你希望kill所有正在使用某一指定的file, file system or sockets的进程的时候,你可以使用-k option。

 

 

#   fuser –k  /path/to/your/filename

 

这时fuser会向所以正在使用/path/to/your/filename的进程发送SIGKILL。如果你希望在发送之前得到提示,可以使用-i 选项。

#   fuser –k –i /path/to/your/filename

 

 











以上是关于scp大文件shell迁移的主要内容,如果未能解决你的问题,请参考以下文章

将带有 SCP 的大文件发送到某个服务器时,会以 2112 kB 的大小停止

scp在两台服务器间传输的脚本

mysql数据库迁移目录后slave报错

大数据迁移

使用 shell 脚本自动传输 scp 文件

EasyClick shell分割大文件