博客园  :: 首页  :: 管理

在linux系统中,rsync命令常用于在两台linux主机之间同步数据

rsync关于认证可以同ssh的用户密码认证一样,我们执行rsync命令后,会要求输入认证的密码,但很多时候数据特别大时,我们是希望执行过程放在后台运行

笔者尝试,在执行rsync命令,如 rsync -az /aa/bb/cc/ --exclude "dir01/" --exclude "dir02" 192.168.88.89:/tmpaa 时,如果在最末尾加上 & 符号 ,则无法输入密码

于是我们能想到的解决方法有如下几种

1、建立免密码认证的方法,通过默认key文件的认证方式

2、通过自动传入密码的方式,如 expect 或 sshpass 等方式

3、依然还是通过我们交互式输入密码,只是最后放置于后台运行

 

今天笔者主要讲解第3种方法的实现过程

1、先在终端执行rsync的命令,输入命令后,按要求输入密码:

[root@qq-5201351 ~]# rsync -az /aa/bb/cc/ --exclude "dir01/" --exclude "dir02" 192.168.88.89:/tmpaa

2、然后我们按下 Ctrl+z  快捷键,这样会将这个命令进程放置于后台运行,如下效果

root@192.168.88.89's password:
^Z
[1]+  Stopped                 rsync -az /aa/bb/cc/ --exclude "dir01/" --exclude "dir02" 192.168.88.89:/tmpaa

但是我们可以看到放到后台后,状态会是Stopped,其实也就是相当于是暂停状态,这种状态,进程不会实际执行,而且终端关闭后,进程也就会被终止掉

3、这样我们需要使用 bg 命令再将这个后台 job进程(1号)置于后台运行,下面的1代表的是job的序号

[root@qq-5201351 ~]# bg %1
[1]+ rsync -az /aa/bb/cc/ --exclude "dir01/" --exclude "dir02" 192.168.88.89:/tmpaa &

4、可以看到输出中,会多一个&后台符号 ,此时这个rsync进程就会持续在后台运行了,直至结束 、笔者测试使用exit或者直接将终端窗口关闭、都不会对这个进程有影响的

 

其他说明: 笔者也看到网上也有说需要再加上,disown -h %1 ,当然执行了也没有啥影响,但笔者测试,没有这一条也能达到放置于后台持续运行的效果

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17497508.html