同步文件

rsync(remote synchronize)

实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息.

rsync认证方式

rsync有两种常用的认证方式,一种是rsync-daemon方式,另外一种是ssh方式。在平时使用过程,我们使用最多的是rsync-daemon方式

rsync服务器架设

rsync的主要有以下三个配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密码文件)、rsyncd.motd(rysnc服务器信息)

  • rsyncd.conf
#从远程机器同步文件到本机
/usr/bin/rsync -rlptDvzHS --port=1111 --password-file=/etc/xx.password root@1.1.1.1::xx/bin/logic/ /data/xx/bin/logic/
#本机目录同步,--delete-excluded:目标目录中存在在源目录不存在删除,并且如果 --exclude指定的也会删除
rsync --delete-excluded -avzp --exclude=3rd target/ des/

scp 复制rsa密钥到远程主机

scp C:\Users\Administrator\.ssh\vps_Identity.pub user@example.com:/home/user/.ssh/vps_far.pub

lrzsz 便携的ssh上传下载工具

yum install lrzsz
#从服务器下载
sz download.txt
#从本机选择文件上传
rz

压缩文件

haozip

"D:\Program Files\HaoZip\HaoZipC.exe" a -tzip crt.zip C:\Users\Administrator.PC-20150720QKHJ\AppData\Roaming\VanDyke\Config\*

tar 压缩

tar -zcvf $PackFile $Project > /dev/null

linux 切割文件

split

#按文件大小切割
split -b 10m yybao_s1.out yybao_s1_
#按文件行数切割
split -l 100 test.txt

logrotate

强制执行某个日志的切,如log.config是在/etc/logrotate.d下文件的文件名logrotate -f log.config

基本配置

opt/clps_tomcat/logs/catalina.out #要切割的日志
{
daily #每日执行
dateext #切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期
copytruncate #复制日志后会清空在数据
nocompress ##不压缩
rotate 15 ##保留15次ratate日志
#size=5MB # k,MB(M),GB(G)
}

mac 下 logrotate 安装

#执行
brew install logrotate
#.zshrc
export LOGROTATE_HOME=/usr/local/Cellar/logrotate/3.9.1/sbin
export PATH=${PATH}:${LOGROTATE_HOME}

日志切割

”/data/yxiii/bin/logs/*.out“
{
size 10m
dateext
copytruncate
nocompress
rotate 20
}

linux 定时任务

at 命令

#明天四点执行shell.sh中的命令
at -f shell.sh 4 am tomorrow
at -f /home/far/Develop/heros/code/server/trunk/bin/stop.sh 4:00 tomorrow
#查看指定任务
at -c 8
#查看列表
atq
#删除指定任务
atrm 1

crontab

crontab脚本目录

  • /etc/crontab: 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab
  • /etc/cron.d/: 这个目录用来存放任何要执行的crontab文件或脚本
  • /var/spool/cron/far: 这个目录下存放的是每个用户(包括root)的crontab任务

crontab 服务查看

  • 启动服务: /sbin/service crond start
  • 关闭服务:/sbin/service crond stop
  • 重启服务: /sbin/service crond restart
  • 重新载入配置: /sbin/service crond reload
  • 查看服务状态: /sbin/service crond status

crontab 选项

  • 概要

    crontab [ -u user ] file
    crontab [ -u user ] [ -i ] { -e | -l | -r }
  • -l:在控制台输出计划执行结果

  • -r :移除指定的文件计划
  • -e 编辑crontab默认配置文件
  • -i : -r移除之前加上确认
  • 验证是否已删除 crontab 文件: ls /var/spool/cron/crontabs

基本配置

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
0 4 8 5 * /Users/far/Develop/workdir/heros_codingnet/bin/stop.sh
43 23 7 5 * /Users/far/Develop/workdir/heros_codingnet/bin/stop.sh
59 23 12 * * /bin/bash /root/stop_games.sh all

实例

自动打包文件备份到指定目录

/data下文件打包备份到/data/backup下以天为文件名,并清除七天以前的备份`
增加计划任务

export EDITOR=vi
crontab -e
0 0 * * * /data/bak.sh;

bak.sh文件内容如下:

#!/bin/bash
logs_dir=/data
bak_dir=/data/backup
bak_file=bak_`date +%Y%m%d`
echo "begining of tar"
tar zcf $bak_dir/$bak_file.gz $logs_dir/*.*
echo "clearing file.log"
find $bak_dir -mtime +7 -exec rm -rf {} \;
#end