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 查看磁盘使用情况 ,发现一只在增加
其中遇到一个问题:
二
在使用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通常被用在诊断系统的“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迁移的主要内容,如果未能解决你的问题,请参考以下文章