Linux站群rsync同步

目标:主服务器程序向多个子服务器同步程序

1. 配置同步源

安装rsync:yum -y install rsync xinetd

开启rsync:vim /etc/xinetd.d/rsync 把disable = yes 改为disable = no

配置:vim /etc/rsyncd.conf

#同步源标识,可随意更改
[site]
#程序路径
path = /home/backup
#允许同步的主机
hosts allow = 192.168.1.14
hosts deny = *
list = true
uid = root
gid = root
read only = false

2.配置同步服务器

同样安装rsync,并可以设置过滤列表,然后执行:

rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /var/www/html/ server_ip
::site

这里的server_ip即为服务器IP或域名,site是同步源标识

另外再设置定时脚本。这样同步服务器的站群便能及时从主服务器rsync同步。

linux network无法启动解决

/service network start 报错:Bringing up interface eth0:  Device does not seem to be present, delaying initialization. [FAILED] 

解决办法:ifconfig -a 查看eth0的HWaddr值

打开/etc/sysconfig/network-scripts/ifcfg-eth0 文件

修改为:

 

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

IPADDR=你的IP

NETMASK=255.255.255.192

HWADDR=00:16:3E:F2:A0:9C

 

重新启动network服务,得以PING通

标签: linux, network

Centos6.2系统优化shell脚本

#!/bin/bash 
#author suzezhi 
#this script is only for CentOS 6 
#check the OS 
platform=`uname -i` 
if [ $platform != "x86_64" ];then 
echo "this script is only for 64bit Operating System !" 
exit 1 
fi 
echo "the platform is ok" 
version=`lsb_release -r |awk '{print substr($2,1,1)}'` 
if [ $version != 6 ];then 
echo "this script is only for CentOS 6 !" 
exit 1 
fi 
cat << EOF 
+---------------------------------------+ 
|   your system is CentOS 6 x86_64      | 
|      start optimizing.......          | 
+--------------------------------------- 
EOF 
#make the 163.com as the default yum repo 
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo -O /etc/yum.repos.d/CentOS-Base.repo 
#add the third-party repo 
#add the epel 
rpm -Uvh http://download.Fedora.RedHat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm 
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
#add the rpmforge 
rpm -Uvh http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm 
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag 
#update the system and set the ntp 
yum clean all 
yum -y update glibc\* 
yum -y update yum\* rpm\* python\* 
yum -y update 
yum -y install ntp 
echo "* 4 * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1" >> /var/spool/cron/root 
service crond restart 
#set the file limit 
echo "ulimit -SHn 102400" >> /etc/rc.local 
cat >> /etc/security/limits.conf << EOF 
*           soft   nofile       65535 
*           hard   nofile       65535 
EOF 
#set the control-alt-delete to guard against the miSUSE 
sed -i 's#exec /sbin/shutdown -r now#\#exec /sbin/shutdown -r now#' /etc/init/control-alt-delete.conf 
#disable selinux 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
#set ssh 
sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config 
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config 
service sshd restart 
#tune kernel parametres 
cat >> /etc/sysctl.conf << EOF 
net.ipv4.tcp_fin_timeout = 1 
net.ipv4.tcp_keepalive_time = 1200 
net.ipv4.tcp_mem = 94500000 915000000 927000000 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_synack_retries = 1 
net.ipv4.tcp_syn_retries = 1 
net.ipv4.tcp_tw_recycle = 1 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216 
net.core.netdev_max_backlog = 262144 
net.core.somaxconn = 262144 
net.ipv4.tcp_max_orphans = 3276800 
net.ipv4.tcp_max_syn_backlog = 262144 
net.core.wmem_default = 8388608 
net.core.rmem_default = 8388608 
EOF 
/sbin/sysctl -p 
#define the backspace button can erase the last character typed 
echo 'stty erase ^H' >> /etc/profile 
echo "syntax on" >> /root/.vimrc 
#stop some crontab 
mkdir /etc/cron.daily.bak 
mv /etc/cron.daily/makewhatis.cron /etc/cron.daily.bak 
mv /etc/cron.daily/mlocate.cron /etc/cron.daily.bak 
chkconfig bluetooth off 
chkconfig cups off 
chkconfig ip6tables off 
#disable the ipv6 
cat > /etc/modprobe.d/ipv6.conf << EOFI 
alias net-pf-10 off 
options ipv6 disable=1 
EOFI 
echo "NETWORKING_IPV6=off" >> /etc/sysconfig/network 
cat << EOF 
+-------------------------------------------------+ 
|               optimizer is done                 | 
|   it's recommond to restart this server !       | 
+-------------------------------------------------+ 
EOF 

http://icooke.blog.51cto.com/4123148/766245

iptables防火墙的基本设置总结

1、安装iptables防火墙

如果没有安装iptables需要先安装,CentOS执行:
yum install iptables

Debian/Ubuntu执行:
apt-get install iptables
2、清除已有iptables规则
iptables -F
iptables -X
iptables -Z

3、开放指定的端口
#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT

#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#禁止其他未允许的规则访问(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
1).用DROP方法
iptables -A INPUT -p tcp -j DROP
2).用REJECT方法
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

4、屏蔽IP
#如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过。
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
4、查看已添加的iptables规则
iptables -L -n

v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
x:在 v 的基础上,禁止自动单位换算(K、M) vps侦探
n:只显示IP地址和端口号,不将ip解析为域名

5、删除已添加的iptables规则

将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers

比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 8
6、iptables的开机启动及规则保存

CentOS上可能会存在安装好iptables后,iptables并不开机自启动,可以执行一下:
chkconfig --level 345 iptables on

将其加入开机启动。

CentOS上可以执行:service iptables save保存规则。

Debian/Ubuntu上iptables是不会保存规则的。
需要按如下步骤进行,让网卡关闭是保存iptables规则,启动时加载iptables规则。
如果当前用户不是root,即使使用了sudo,也会提示你没有权限,无法保存,所以执行本命令,你必须使用root用户.
可以使用sudo -i快速转到root,使用完成,请及时使用su username切换到普通帐户.
为了重启服务器后,规则自动加载,我们创建如下文件:
sudo vim /etc/network/if-pre-up.d/iptables
#!/bin/bash
iptables-save > /etc/iptables.rules

添加执行权限。
chmod +x /etc/network/if-pre-up.d/iptables

附上基础规则:
*filter
:INPUT ACCEPT [106:85568]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [188:168166]
:RH-Firewall-1-INPUT - [0:0]
#允许本地回环接口(即运行本机访问本机)
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#允许已建立的或相关连的通行
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
-A OUTPUT -j ACCEPT
#允许PPTP拨号翻墙
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
#仅特定主机访问Rsync数据同步服务
-A INPUT -s 8.8.8.8/32 -p tcp -m tcp --dport 873 -j ACCEPT
#仅特定主机访问WDCP管理系统
-A INPUT -s 6.6.6.6/32 -p tcp -m tcp --dport 8080 -j ACCEPT
#允许访问SSH
-A INPUT -p tcp -m tcp --dport 1622 -j ACCEPT
#允许访问FTP
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
#允许访问网站服务
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
#禁止所有未经允许的连接
-A INPUT -p tcp -j DROP
#注意:如果22端口未加入允许规则,SSH链接会直接断开。
#-A INPUT -j REJECT
#-A FORWARD -j REJECT
COMMIT

可以使用一下方法直接载入:
1、复制上面的规则粘贴到这里,保存本文件
sudo vim /etc/iptables.test.rules
2、把本规则加载,使之生效,注意,iptables不需要重启,加载一次规则就成了
sudo iptables-restore < /etc/iptables.test.rules
3、查看最新的配置,应该所有的设置都生效了.
sudo iptables -L -n
4、保存生效的配置,让系统重启的时候自动加载有效配置(iptables提供了保存当前运行的规则功能)
iptables-save > /etc/iptables.rules

shell里的/dev/null 2>&1详解

shell中可能经常能看到:>/dev/null 2>&1

命令的结果可以通过%>的形式来定义输出

分解这个组合:“>/dev/null 2>&1” 为五部分。

1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
2:/dev/null 代表空设备文件
3:2> 表示stderr标准错误
4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"

因此,>/dev/null 2>&1
也可以写成“1> /dev/null 2> &1”

那么本文标题的语句执行过程为:
1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

最常用的方式有:
    
command > file 2>file  与command > file 2>&1

它们有什么不同的地方吗?
      首先command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command  > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。
      而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。
      从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command > file 2>&1 这样的写法。
 

标签: linux, NULL, shell, 定向