在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
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!