yibinqi0 2013-11-16
http://blog.sina.com.cn/s/blog_8db5baf9010182cj.html
1.shell打包压缩文件,并保留每个月内前一周和每周五数据
[root@SV192archive]#cat/root/tarsrccode.sh
#!/usr/bin
SDIR="/data/disk2/srccode/"
BDIR="/data/disk2/srccode/archive"
#需要保留的天数r
r=4
DATE=$(date+"%Y%m%d")
date7=$(date--date'7daysago'+"%Y%m%d")
date7sjc=$(date+%s-d"$date7")
lfriday=$(date--date'lastfriday'+"%Y%m%d")
lfridaysjc=$(date+%s-d"$lfriday")
cd$SDIR
/bin/tar-zcPf"$BDIR"/pdwebconfig."$DATE".tar.gz./pdwebconfig&
/bin/tar-zcPf"$BDIR"/Update."$DATE".tar.gz./Update&
cd$BDIR
foriin`ls$BDIR`
do
#echo$i
date=$(ls$i|awk-F'.''{print$2}')
datesjc=$(date+%s-d"$date")
#echo"文件时间$datesjc"
echo"现在处理:$i文件时间$datesjc"
m=0
if["$datesjc"-lt"$date7sjc"];then
for((n=1;n<$r;n++))
do
fridaysjc=$(($lfridaysjc-n*3600*7*24))
echo"判断日期一致:$datesjc?$fridaysjc"
echo"shijian1:$datesjcshijian2:$date7sjc"
if["$datesjc"-eq"$fridaysjc"];then
m=$(($m+1))
fi
done
else
m=1
fi
echo"M:$m"
if[$m=1];then
echo"保留$i"
else
echo"删除$i"
rm-f$i
fi
done
====================================
2.
如何用shell实现删除创建时间超过指定时间的文件?
http://bbs.csdn.net/topics/340234195
find.-name"backup_*.gz"-mtime+7-execrm{}\;
n小时创建把-mtime+7改为-cminn
-aminn
查找系统中最后N分钟访问的文件
-atimen
查找系统中最后n*24小时访问的文件
-cminn
查找系统中最后N分钟被改变状态的文件
-ctimen
查找系统中最后n*24小时被改变状态的文件
-mtimen
查找系统中最后n*24小时被修改的文件
===========================
3.
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3765383
[文件目录]如何判断文件的创建日期是否符合要求
find/PATH-typef-mtime+180
================================
4.
http://linux.sheup.com/linux/linux5497.htm
shell-一个判断文件日期的问题
我想写这样一个脚本:ls-l看到文件日期后,如果该文件的日期是7天以前的旧文件,就执行一些操作,不知道这个脚本该如何写?
据说crontab可以实现,各位大侠有看到过么?
用find
find.-ctime+7-execcmd_do_someting{};
cmd_do_somethingexample:
#!/bin/sh
echo"getit!$1"
find.-ctime+7|xargsxx
(执行xx操作)
我的操作系统是AIX,我试了一下
find.-ctime1-print
只是列出过去24小时的文件,
而find.-ctime2-print,则是列出过去24到48小时之间的文件。
就是说用ctime参数只能找到某一天的文件。
像前面samhoo举的例子find.-ctime+7,我试了一下就什么也找不到。
不知道是否和操作系统有关,在aix下的manfind也未看到ctime后带+这样的写法。
请大侠再帮忙看看,急啊!!!
我现在想用find命令找到当前目录下1~7天以前的文件,应该如何写?
用一个ls再加上管道在前面就可以了
应该可以吧+号应该是大于,-是小于的意思吧
找到当前目录下1~7天以前的文件,
find.-ctime+1-ctime-7-print就可以了吧
==============================
5.
http://blog.163.com/shi_shun/blog/static/237078492012915774533/
Linux/UNIX的scp命令用法详解
PS:偶很喜欢用scp这个命令来传输数据。scp命令跟cp命令类似,只不过cp命令是在同一台机器上用的,scp是在两台机器上复制传输数据的命令。scp实质相当于利用SSH协议来传输数据的cp命令。
用法举例:
1、复制远程服务器的文件到本地:
[email protected]:/data/ha97.zip/home/
2、复制远程服务器的目录到本地:
[email protected]:/data/ha97//home/
3、复制本地的文件到远程服务器:
scp-P888/home/[email protected]:/data/
4、复制本地的目录到远程服务器:
scp-vrp-P888/home/[email protected]:/data/
SCP命令语法
scp[-1245BCpqrv][-ccipher][Fssh_config][-Iidentity_file][-llimit][-ossh_option][-Pport][-Sprogram][[user@]host1:]file1[…][[suer@]host2:]file2
SCP命令说明
Scp在主机间复制文件。他使用ssh(1)作为数据传输。而且用同样认证和安全性。scp将在认证中请求输入密码所有的文件可能需要服务器和用户的特别描述来指明文件将被复制到/从某台服务器。两个远程登录的服务器间的文件复制是允许的。
SCP命令选项
-1强制scp用协议1
-2强制scp用协议2
-4强制scp用IPV4的网址
-6强制scp用IPV6的网址
-B选择批处理模式(防止输入密码)
-C允许压缩。标注-C到ssh(1)来允许压缩
-ccipher
选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-Fssh_config
设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-iidentity_file
选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-llimit
限制传输带宽,也就是速度用Kbit/s的速度
-ossh_option
可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。关于选项的如下。而他们的值请参看ssh_config(5)
-Pport
指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-Sprogram
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p指定修改次数,连接次数,还有对于原文件的模式
-q把进度参数关掉
-r递归的复制整个文件夹
-Sprogram
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V冗余模式。让scp和ssh(1)打印他们的排错信息,这个在排错连接,认证,和配置中非常有用。
SCP命令诊断
scp返回0成功时,不成功时返回值大于0
SCP命令不需要输入用户密码的使用方法
在两台机器的两个用户之间建立安全的信任关系后,可实现执行scp命令时不需要输入用户密码。
1.在机器A上root用户执行ssh-keygen命令,生成建立安全信任关系的证书。
[root@Aroot]#ssh-keygen-b1024-trsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):<–直接输入回车
Enterpassphrase(emptyfornopassphrase):<–直接输入回车
Entersamepassphraseagain:<–直接输入回车
Youridentificationhasbeensavedin/root/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/root/.ssh/id_rsa.pub.
Thekeyfingerprintis:……
注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。
上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户目录的.ssh子目录中。
2.将公钥证书id_rsa.pub复制到机器B的root目录的.ssh子目录中,同时将文件名更换为authorized_keys。
[root@Aroot]#scp-p.ssh/id_rsa.pubroot@机器B的IP:/root/.ssh/authorized_keys
[email protected]’spassword:<–输入机器B的root用户密码
在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器B的root用户密码。
经过以上2步,就在机器A的root和机器B的root之间建立安全信任关系。下面我们看看效果:
[root@Aroot]#scp-ptestroot@机器B的IP地址:/root
成功了!真的不再需要输入密码了。
来源:http://www.21andy.com/blog/20100911/1943.html
本人有修改。
===========================================
6.
http://bbs.chinaunix.net/thread-3725155-1-1.html
bash和sh的不同点?高手指点指点下吧