Centos下SFTP双机高可用环境部署记录

简介:

SFTP(SSH File Transfer Protocol),安全文件传送协议。有时也被称作 Secure File Transfer Protocol 或 SFTP。它和SCP的区别是它允许用户中断传输,
SCP拷贝速度稍快一些。SFTP可以为传输文件提供一种安全的加密方法。
SFTP与FTP有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP的
安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不
像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用
了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
下面说下SFTP+Keepalived双机高可用方案部署记录:
sftp -test01  172.16.51.191
sftp -test02  172.16.51.192
VIP          172.16.51.193
 
一、 sftp -test01服务器操作:
1)查看openssh的版本
使用 ssh  -V 命令来查看openssh的版本,版本必须大于4.8p1,低于的这个版本需要升级。
[root@ sftp -test01 ~] # ssh -V  
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
 
2)创建 sftp
[root@ sftp -test01 ~] # groupadd sftp
 
3)创建一个 sftp 用户,用户名为mysftp,密码为mysftp
修改用户密码和修改Linux用户密码是一样的。
[root@ sftp -test01 ~] # useradd -g sftp -s /bin/false mysftp
[root@ sftp -test01 ~] # passwd mysftp
 
4) sftp 组的用户的home目录统一指定到 /data/sftp 下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为 /data/sftp/mysftp
[root@ sftp -test01 ~] # mkdir -p /data/sftp/mysftp 
[root@ sftp -test01 ~] # usermod -d /data/sftp/mysftp mysftp
 
5)配置sshd_config
修改或添加下面配置
[root@ sftp -test01 ~] # cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak2
[root@ sftp -test01 ~] # vim /etc/ssh/sshd_config
......
#Subsystem  sftp  /usr/libexec/openssh/sftp-server
Subsystem        sftp     internal- sftp
Match Group  sftp
ChrootDirectory  /data/sftp/ %u
ForceCommand    internal- sftp
AllowTcpForwarding no
X11Forwarding no
 
设定Chroot目录权限
[root@ sftp -test01 ~] # chown root:sftp /data/sftp/mysftp
[root@ sftp -test01 ~] # chmod 755 /data/sftp/mysftp
 
6)建立SFTP用户登入后可写入的目录
按照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。
这个目录所有者为mysftp,所有组为 sftp ,所有者有写入权限,而所有组无写入权限。
[root@ sftp -test01 ~] # mkdir /data/sftp/mysftp/upload 
[root@ sftp -test01 ~] # chown mysftp:sftp /data/sftp/mysftp/upload 
[root@ sftp -test01 ~] # chmod 755 /data/sftp/mysftp/upload 
 
7)关闭防火墙
[root@ sftp -test01 ~] # /etc/init.d/iptables stop
[root@ sftp -test01 ~] # setenforce 0
setenforce: SELinux is disabled
[root@ sftp -test01 ~] # cat /etc/sysconfig/selinux
.......
SELINUX=disabled
 
8)重启sshd服务
[root@ sftp -test01 ~] # service sshd restart 
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
 
9)验证 sftp 环境
如下显示,这说明SFTP已经搭建成功
[root@ sftp -test01 ~] # sftp mysftp@172.16.51.191
Connecting to 172.16.51.191...
The authenticity of host  '172.16.51.191 (172.16.51.191)'  can't be established.
RSA key fingerprint is c0:f5:1d:03:3b:00:4a:11:54:8c:a7:a3:6f:77:47:c7.
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '172.16.51.191'  (RSA) to the list of known hosts.
mysftp@172.16.51.191's password:
sftp ls
upload 
sftp cd  upload
sftp ls
 
10)使用FileZilla FTP Client连接SFTP服务器
输入主机IP地址172.16.51.191、用户名mysftp、密码mysftp、端口(默认为22端口)连接SFTP服务器。
连接后,默认的路径是 /data/sftp/mysftp
 
二、 sftp -test02服务器需要和上面 sftp -test01一样的操作!
 
三、 sftp -test01和 sftp -test02两台机器的 /data/sftp 目录做实时同步( rsync +inotify)
考虑到数据完整性和安全性,实施单向实时同步,即从 sftp -test01机器的 /data/sftp 实时同步到 sftp -test02的data /sftp
操作如下:
1)在目标服务器 sftp -test02上的部署过程
安装配置 rsync 服务端
[root@ sftp -test02 ~] # yum install rsync xinetd
[root@ sftp -test02 ~] # vim /etc/xinetd.d/rsync
......
    disable  = no
......
 
启动xineted服务
[root@ sftp -test02 ~] #  /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
 
创建 /etc/rsyncd .conf文件
[root@ sftp -test02 ~] # vim /etc/rsyncd.conf
[root@ sftp -test02 ~] # cat /etc/rsyncd.conf
log  file  /var/log/rsyncd .log
pidfile =  /var/run/rsyncd .pid
lock  file  /var/run/rsync .lock
secrets  file  /etc/rsync .pass
motd  file  /etc/rsyncd .Motd
 
[sftp_upload]
path =  /data/sftp
comment = sftp_upload
uid = root
gid =  sftp
port=873
use chroot = no
read  only = no
list = no
max connections = 200
timeout = 600
auth  users  = RSYNC_USER
hosts allow = 172.16.51.191
 
注意:权限不要搞错了!
上面填写的uid是root,gid是 sftp ,是因为 /data/sftp/
[root@ sftp -test02 ~] # ll -d /data/sftp
drwxr-xr-x 3 root root 4096 Nov 21 05:21  /data/sftp
[root@ sftp -test02 ~] # ll /data/sftp/
total 4
drwxr-xr-x 3 root  sftp  4096 Nov 21 07:28 mysftp
 
创建用户认证文件
[root@ sftp -test02 ~] # vim /etc/rsync.pass
RSYNC_USER:123456@ rsync
 
设置文件权限,即rsyncd.conf和 rsync .pass认证文件都是600权限!
[root@ sftp -test02 ~] # chmod 600 /etc/rsyncd.conf
[root@ sftp -test02 ~] # chmod 600 /etc/rsync.pass
 
重启 rsync 服务
[root@ sftp -test02 ~] # /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[root@ sftp -test02 ~] # lsof -i:873
COMMAND  PID USER   FD   TYPE DEVICE SIZE /OFF  NODE NAME
xinetd  3797 root    5u  IPv6  16264      0t0  TCP *: rsync  (LISTEN)
 
2)在源服务器172.16.51.191上的部署过程
[root@ sftp -test01 ~] # yum install rsync xinetd
[root@ sftp -test01 ~] # vim /etc/xinetd.d/rsync
......
    disable  = no
......
[root@ sftp -test01 ~] # /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[root@ sftp -test01 ~] # lsof -i:873
COMMAND  PID USER   FD   TYPE DEVICE SIZE /OFF  NODE NAME
xinetd  3444 root    5u  IPv6  15917      0t0  TCP *: rsync  (LISTEN)
 
创建同步的密码文件,这个文件名可以跟服务端的认证文件不一样,但是里面的密码必须一致!用于 rsync 同步命令中。
不过,最好两边的文件设置成一样,便于管理
[root@ sftp -test01 ~] # cat /etc/rsync.pass
123456@ rsync
 
设置 rsync .pass密码文件为600权限
[root@ sftp -test01 ~] # chmod 600 /etc/rsync.pass
 
查看服务器内核是否支持inotify,出现下面的内容,说明服务器内核支持inotify
[root@ sftp -test01 ~] # ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Nov 21 08:12 max_queued_events
-rw-r--r-- 1 root root 0 Nov 21 08:12 max_user_instances
-rw-r--r-- 1 root root 0 Nov 21 08:12 max_user_watches
 
注意:Linux下支持inotify的内核最小为2.6.13,可以输入命令: uname  -a查看内核
CentOS 5.X 内核为2.6.18,默认已经支持inotify
[root@ sftp -test01 ~] # uname -a
Linux  sftp -test01 2.6.32-696.13.2.el6.x86_64  #1 SMP Thu Oct 5 21:22:16 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
 
下面开始安装inotify-tools
[root@ sftp -test01 ~] # yum install make gcc gcc-c++
[root@ sftp -test01 ~] # cd /usr/local/src/
[root@ sftp -test01 src] # wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
[root@ sftp -test01 src] # tar zxvf inotify-tools-3.14.tar.gz
[root@ sftp -test01 src] # cd inotify-tools-3.14
[root@ sftp -test01 inotify-tools-3.14] #  ./configure --prefix=/usr/local/inotify
[root@ sftp -test01 inotify-tools-3.14] # make && make install
 
发现已经成功安装inotify-tools了
[root@ sftp -test01 inotify-tools-3.14] # ll -d /usr/local/inotify/
drwxr-xr-x 6 root root 4096 Nov 21 08:14  /usr/local/inotify/
 
设置系统环境变量
[root@ sftp -test01 inotify-tools-3.14] # vim /etc/profile
.......
export  PATH=$PATH: /usr/local/inotify/bin
[root@ sftp -test01 inotify-tools-3.14] # source /etc/profile
 
添加库文件
[root@ sftp -test01 inotify-tools-3.14] # vim /etc/ld.so.conf
......
/usr/local/inotify/lib
[root@ sftp -test01 inotify-tools-3.14] # ldconfig
 
修改inotify默认参数(inotify默认内核参数值太小)
查看系统默认参数值
[root@ sftp -test01 inotify-tools-3.14] # sysctl -a | grep max_queued_events
fs.inotify.max_queued_events = 16384
[root@ sftp -test01 inotify-tools-3.14] # sysctl -a | grep max_user_watches
fs.inotify.max_user_watches = 8192
fs.epoll.max_user_watches = 796344
[root@ sftp -test01 inotify-tools-3.14] # sysctl -a | grep max_user_instances
fs.inotify.max_user_instances = 128
 
[root@ sftp -test01 inotify-tools-3.14] # sysctl -w fs.inotify.max_queued_events="99999999"
fs.inotify.max_queued_events = 99999999
[root@ sftp -test01 inotify-tools-3.14] # sysctl -w fs.inotify.max_user_watches="99999999"
fs.inotify.max_user_watches = 99999999
[root@ sftp -test01 inotify-tools-3.14] # sysctl -w fs.inotify.max_user_instances="65535"
fs.inotify.max_user_instances = 65535
 
参数说明:
max_queued_events:
inotify队列最大长度,如果值太小,会出现 "** Event Queue Overflow **" 错误,导致监控文件不准确
max_user_watches:
要同步的文件包含多少目录,可以用: find  /Data/xqsj_upload  - type  d |  wc  -l 统计这些源目录下的目录数,必须保证max_user_watches值大于统计结果(这里 /Data/xqsj_upload 为同步的源文件目录)
max_user_instances:
每个用户创建inotify实例最大值
 
接着执行同步操作:
在源服务器上执行 rsync 首次全量同步的操作(加--delete参数,保持目标目录和源目录下文件绝对一致)
[root@ sftp -test01 ~] # rsync -avH --port=873 --progress --delete /data/sftp/ RSYNC_USER@172.16.51.192::sftp_upload --password-file=/etc/rsync.pass
 
待第一次 rsync 全量同步完成后,就进行 rsync +inotify实时同步脚本操作。
实时同步脚本里添加的是--delete-before参数,而不是--delete参数(第一次全量同步时 rsync 用的参数),二者区别:
--delete参数:表示 rsync 同步前,暴力删除目标目录中的所有文件,然后再执行同步操作。
--delete-before参数:表示 rsync 同步前,会先对目标目录进行一次扫描检索,删除目标目录中对比源目录的多余文件,然后再执行同步操作。显然比--delete参数安全些。
 
[root@ sftp -test01 data] # cd /data/script/
[root@ sftp -test01 script] # vim sftp_data_rsync.sh
#!/bin/bash
SRCDIR= /data/sftp/
USER=RSYNC_USER
IP=172.16.51.192
DESTDIR=sftp_upload
/usr/local/inotify/bin/inotifywait  -mrq --timefmt  '%d/%m/%y %H:%M'  -- format  '%T %w%f%e'  -e close_write,modify,delete,create,attrib,move $SRCDIR |  while  read  file
do
/usr/bin/rsync  -avH --port=873 --progress --delete-before $SRCDIR $USER@$IP::$DESTDIR --password- file = /etc/rsync .pass
echo  " ${file} was rsynced"  >>  /tmp/rsync .log 2>&1
done
 
[root@ sftp -test01 script] # chmod 755 sftp_data_rsync.sh
[root@ sftp -test01 script] # nohup sh sftp_data_rsync.sh &          //按ctrl+c结束
[1] 8807
[root@ sftp -test01 script] # ps -ef|grep inotify
root      8808  8807  0 22:55 pts /0     00:00:00  /usr/local/inotify/bin/inotifywait  -mrq --timefmt %d/%m/%y %H:%M -- format  %T %w%f%e -e close_write,modify,delete,create,attrib,move  /data/sftp/
root      8811  8451  0 22:55 pts /0     00:00:00  grep  inotify
 
这样, sftp -test01机器的 /data/sftp 目录下的文件就会自动实时同步到 sftp -test02机器的 /data/sftp 目录下
注意:这是单向实时同步!如果要想做双向实时同步!那就需要在 sftp -test02机器上再做个inotify监控脚本(同时, sftp -test01也要做个rsyncd.conf文件)
 
 
四、SFTP结合Keepalived做双机高可用
1)下载安装Keepalived(两台机器同样操作)
[root@ sftp -test01 ~] # cd /usr/local/src/
[root@ sftp -test01 src] # wget http://www.keepalived.org/software/keepalived-1.3.2.tar.gz
[root@ sftp -test01 src] # tar -zvxf keepalived-1.3.2.tar.gz
[root@ sftp -test01 src] # cd keepalived-1.3.2
[root@ sftp -test01 keepalived-1.3.2] # ./configure && make && make install
[root@ sftp -test01 keepalived-1.3.2] # cp /usr/local/src/keepalived-1.3.2/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
[root@ sftp -test01 keepalived-1.3.2] # cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@ sftp -test01 keepalived-1.3.2] # mkdir /etc/keepalived
[root@ sftp -test01 keepalived-1.3.2] # cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@ sftp -test01 keepalived-1.3.2] # cp /usr/local/sbin/keepalived /usr/sbin/
[root@ sftp -test01 keepalived-1.3.2] # echo "/etc/init.d/keepalived start" >> /etc/rc.local
 
2)配置Keepalived.conf文件
[root@ sftp -test01 keepalived-1.3.2] # cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@ sftp -test01 keepalived-1.3.2] # vim /etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
   
global_defs {
notification_email {
wangshibo@wangshibo.com
}
   
notification_email_from notice@wangshibo.com
smtp_server smtp.wangshibo.com
smtp_connect_timeout 30
router_id master-node
}
   
vrrp_script chk_sftp_port {
     script  "/data/chk_sftp.sh" 
     interval 2                
     weight -5            
     fall 2              
     rise 1  
}
   
vrrp_instance VI_1 { 
     state MASTER
     interface eth0
     mcast_src_ip 172.16.51.191
     virtual_router_id 51 
     priority 101       
     advert_int 1            
     authentication {        
         auth_type PASS        
         auth_pass 1111       
     }
     virtual_ipaddress {         
         172.16.51.193
     }
  
track_script {                     
    chk_sftp_port     
}
}
 
 
sftp -test02服务器作为backup端的Keepalived.conf配置如下:
[root@ sftp -test02 keepalived-1.3.2] # cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@ sftp -test02 keepalived-1.3.2] # vim /etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
   
global_defs {
notification_email {
wangshibo@wangshibo.com
}
   
notification_email_from notice@wangshibo.com
smtp_server smtp.wangshibo.com
smtp_connect_timeout 30
router_id master-node
}
   
vrrp_script chk_sftp_port {
     script  "/data/chk_sftp.sh" 
     interval 2                
     weight -5            
     fall 2              
     rise 1  
}
   
vrrp_instance VI_1 { 
     state BACKUP
     interface eth0
     mcast_src_ip 172.16.51.192
     virtual_router_id 51 
     priority 99       
     advert_int 1            
     authentication {        
         auth_type PASS        
         auth_pass 1111       
     }
     virtual_ipaddress {         
         172.16.51.193
     }
  
track_script {                     
    chk_sftp_port     
}
}
 
编写 sftp 监控脚本(两台机器都要写)
[root@ sftp -test01 keepalived-1.3.2] # vim /data/chk_sftp.sh
#!/bin/bash
counter=$( /etc/init .d /sshd  status| grep  running| wc  -l)
if  "${counter}"  "0"  ];  then
     /etc/init .d /sshd  start
     sleep  2
     counter=$( /etc/init .d /sshd  status| grep  running| wc  -l)
     if  "${counter}"  "0"  ];  then
         /etc/init .d /keepalived  stop
     fi
fi
[root@ sftp -test01 keepalived-1.3.2] # chmod 755 /data/chk_sftp.sh
 
3)两台机器都要启动Keepalived
[root@ sftp -test01 ~] # /etc/init.d/keepalived start
[root@ sftp -test02 ~] # /etc/init.d/keepalived start
 
启动后发现 sftp -test01已经有了vip资源
[root@ sftp -test01 ~] # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
     link /loopback  00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1 /8  scope host lo
     inet6 ::1 /128  scope host
        valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     link /ether  02:f6:cb:83:ad:03 brd ff:ff:ff:ff:ff:ff
     inet 172.16.51.191 /24  brd 172.16.51.255 scope global eth0
     inet 172.16.51.193 /32  scope global eth0
     inet6 fe80::f6:cbff:fe83:ad03 /64  scope link
        valid_lft forever preferred_lft forever
 
 
4)高可用测试:
-> 先关闭 sftp -test01机器的Keepalived服务,发现vip资源就会自动漂到 sftp -test02机器上继续提供服务。
    sftp -test01机器的Keepalived服务恢复后,vip资源就会自动抢占回来。
-> 关闭 sftp -test01机器的 ssh 服务,通过脚本会自动启动 ssh 服务,当启动失败后,会强制关闭Keepalived服务,从而实现vip资源的漂移!
 
注意:
在FileZilla客户端里使用172.16.51.193的vip进行连接。可以在FileZilla客户端的 "文件" 里建立 "新站点" ,协议”SFTP
登陆类型:正常

=====================================================================
发现上面双向实时同步的高可用方案实施后,文件上传到ftp目录下的状态有点问题,有的文件上传后大小变化严重以至文件损坏,无法打开!
后面将双向实时同步策略关闭,往单个机器上传文件就没问题,判断是rsync+inotify双向实时同步造成的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
调整后的新方案:
编写一个监控vip资源的脚本,当vip在哪台机器上时,就做这台机器到另一台的 rsync 单向同步操作,并且后台一直运行这个脚本(通过循环语句保证脚本一直运行)
放弃原来的 rsync +inotify双向实时同步脚本!
 
脚本内容如下:
停止之前的 rsync +inotify实时监控脚本,然后做两台机器的相互信任关系。
 
1)第一台机器 sftp -test01的操作
[root@sign-test01 ~] # cat /data/script/sftp_vip_monit.sh
#!/bin/bash
while  "1"  "1"  ]
do
   NUM=`ip addr| grep  172.16.51.193| wc  -l`
   if  [ $NUM - eq  0 ]; then
      echo  "vip is not at this server"  > /dev/null  2>&1
   fi
 
   if  [ $NUM - eq  1 ]; then
      /usr/bin/rsync  -e  "ssh -p22"  -avpgolr --progress --delete-before  /data/sftp/mysftp/  root@172.16.51.192: /data/sftp/mysftp/
   fi
 
done
 
 
[root@sign-test01 ~] # chmod 755 /data/script/sftp_vip_monit.sh
[root@sign-test01 ~] # nohup sh /data/script/sftp_vip_monit.sh &      //按ctrl+c结束
[root@sign-test01 ~] # ps -ef|grep monit
root     10581 22167  0 19:42 pts /0     00:00:00  grep  monit
root     15113     1  8 17:15 ?        00:13:00 sh sftp_vip_monit.sh
 
2)第二台机器 sftp -test02
[root@sign-test02 ~] # cat /data/script/sftp_vip_monit.sh
#!/bin/bash
while  "1"  "1"  ]
do
   NUM=`ip addr| grep  172.16.51.193| wc  -l`
   if  [ $NUM - eq  0 ]; then
      echo  "vip is not at this server"  > /dev/null  2>&1
   fi
 
   if  [ $NUM - eq  1 ]; then
      /usr/bin/rsync  -e  "ssh -p22"  -avpgolr --progress --delete-before  /data/sftp/mysftp/  root@172.16.51.191: /data/sftp/mysftp/
   fi
 
done
 
[root@sign-test02 ~] # chmod 755 /data/script/sftp_vip_monit.sh
[root@sign-test02 ~] # nohup sh /data/script/sftp_vip_monit.sh &      //按ctrl+c结束
[root@sign-test02 ~] # ps -ef|grep monit
root     10581 22167  0 19:42 pts /0     00:00:00  grep  monit
root     15113     1  8 17:15 ?        00:13:00 sh sftp_vip_monit.sh
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/7868049.html,如需转载请自行联系原作者
相关文章
|
2月前
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12
|
2月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
42 0
|
1月前
|
存储 JavaScript Linux
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
Linux环境下安装nmp(Centos环境)保姆级教学 一步到位
|
2月前
|
关系型数据库 MySQL Linux
CentOS7环境下安装MySQL5.6
CentOS7环境下安装MySQL5.6
196 0
|
1月前
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
97 1
|
8天前
|
JavaScript Linux 数据安全/隐私保护
如何在CentOS7部署Wiki.js知识库并实现分享好友公网远程使用【内网穿透】
如何在CentOS7部署Wiki.js知识库并实现分享好友公网远程使用【内网穿透】
|
14天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
25 0
|
14天前
|
分布式计算 Hadoop Java
centos 部署Hadoop-3.0-高性能集群(一)安装
centos 部署Hadoop-3.0-高性能集群(一)安装
15 0
|
14天前
|
Linux Apache
CentOS 7 源码安装LAMP环境源 和apache监听别的端口
CentOS 7 源码安装LAMP环境源 和apache监听别的端口
12 0
|
25天前
|
Linux Shell 开发工具
CentOS8中Docker安装及部署
CentOS8中Docker安装及部署
75 0