常用文件处理脚本

   定时任务,每天0点0分将/var/log/nginx目录下7天以前大于1G的日志文件移到/date/201801xx      (以前一天日期命名的)目录中:创建脚本:/root/nginxbak.sh 
#!/bin/bash
dir=/date/`date +%Y%m%d -d -1day`
mkdir $dir -p
/bin/find /var/log/nginx/  -type f -mtime +7 -size +1G |xargs mv -t $dir
检查脚本:sh -x nginxbak.sh
echo "00 00 * * * /bin/sh /root/nginxbak.sh >/dev/null 2>&1"
 
编写shell脚本,实现功能:在目录/tmp下找到10个以abc开头的文件,把这些文件的第一行保存到文件new中。
touch /tmp/abc{1..20}       创建实验文件
cd /tmp;ls abc*|xargs -n1|awk '{print"echo test >"$0}' |bash   追加各种文件里面内容
find . -type f -name "abc*" |head|xargs head -1 -q >/tmp/new.txt
 
定时备份系统重要文件,并生成md5验证信息,再使用rsync发送到备份服务器,并将超过7天的备份文件删除。
#!/bin/bash
IP=$(ifconfig eno1|awk 'NR==2 {print $2}')
Path=/backup
Time=$(date +%F)
mdkir $Path/$IP/ -P
cd /&&tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.l ocal etc/sysconfig/iptables var/www/html app/logs &&\
md5sum $Path/$IP/backup_$Time.tar.gz > $Path/$IP/flag_$Time.log &&\
rsync -az $Path/ rsync_backup@192.168.10.7::backup --password-file=/etc/rsync.passsword &&\
find $Path/ -type f -mtime +7 \(-name "*.tar.gz" -o -name "*.log"\) |xargs rm -f
 
rsync备份服务器空间有限,并将超过180天的备份文件删除且每周六备份的文件不删除。并检查备份结果是否正常,并将每天的备份结果发给管理员信箱。
生产服务器备份脚本:
#!/bin/bash
IP=$(ifconfig eno1|awk 'NR==2 {print $2}')
Path=/backup
if [ $(date +%w) -eq 6 ]
then
Time=$(date +%F_%w)
else
Time=$(date +%F)
fi
mkdir $Path/$IP/ -p
cd /&&tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\
md5sum $Path/$IP/backup_$Time.tar.gz > $Path/$IP/flag_$Time.log &&\
rsync -az $Path/ rsync_backup@192.168.10.7::backup --password-file=/etc/rsync.password &&\
find $Path/ -type f -mtime +7 \(-name "*.tar.gz" -o -name "*.log"\) |xargs rm -f
rsync备份服务器删除脚本:
find $Path/ -type f -mtime +180 ! -name "*_6*" |xargs rm -f
rsync端检查备份结果是否正常并发送结果给管理员邮箱:
IP=$(ifconfig eno1|awk 'NR==2 {print $2}')
Path=/backup
if [ $(date +%w) -eq 6 ]
then
Time=$(date +%F_%w)
else
Time=$(date +%F)
fi
LANG=en
find /backup/ -type f -name "*_6*.log" |xargs md5sum -c >>$Path/${Time}_result.log && mail -s "$Time bak result" tang@126.com < $Path/${Time}_result.log
find $Path/ -type f -mtime +180 ! -name "*_6*" |xargs rm -f