之前BEA用遇到的问题~~~Linux

http://blog.sina.com.cn/s/blog_8db5baf9010182cj.html

1. shell 打包压缩文件,并保留每个月内前一周和每周五数据

[root@SV192 archive]# 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 '7 days ago' +"%Y%m%d")
date7sjc=$(date +%s -d "$date7")

lfriday=$(date --date 'last friday' +"%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
for i in `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:$datesjc shijian2:$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
http://www.iteye.com/problems/47259


find . -name "backup_*.gz"   -mtime +7 -exec rm  {} \;

n小时创建把-mtime +7 改为-cmin n

-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变状态的文件
-ctime n
查找系统中最后n*24小时被改变状态的文件
-mtime n
查找系统中最后n*24小时被修改的文件


===========================

3. 
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3765383
[文件目录] 如何判断文件的创建日期是否符合要求


find /PATH -type f -mtime +180 

================================

4.
http://linux.sheup.com/linux/linux5497.htm
shell - 一个判断文件日期的问题

我想写这样一个脚本:ls -l看到文件日期后,如果该文件的日期是7天以前的旧文件,就执行一些操作,不知道这个脚本该如何写?

据说crontab可以实现,各位大侠有看到过么?

用 find

find . -ctime +7 -exec cmd_do_someting {} ;

cmd_do_something example:
#!/bin/sh
echo "get it! $1"

find . -ctime +7|xargs xx

(执行xx操作)

我的操作系统是AIX,我试了一下
find . -ctime 1 -print
只是列出过去24小时的文件,
而find . -ctime 2 -print,则是列出过去24到48小时之间的文件。
就是说用ctime参数只能找到某一天的文件。

像前面samhoo举的例子find . -ctime +7,我试了一下就什么也找不到。
不知道是否和操作系统有关,在aix下的man find也未看到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、复制远程服务器的文件到本地:
scp -P888 [email protected]:/data/ha97.zip /home/
2、复制远程服务器的目录到本地:
scp -vrp -P888 [email protected]:/data/ha97/ /home/
3、复制本地的文件到远程服务器:
scp -P888 /home/ha97.zip [email protected]:/data/
4、复制本地的目录到远程服务器:
scp -vrp -P888 /home/ [email protected]:/data/

SCP 命令语法
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[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)来允许压缩
-c cipher
选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-F ssh_config
设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-i identity_file
选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-l limit
限制传输带宽,也就是速度 用Kbit/s的速度
-o ssh_option
可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。关于选项的如下。而他们的值请参看ssh_config(5)
-P port
指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p 指定修改次数,连接次数,还有对于原文件的模式
-q 把进度参数关掉
-r 递归的复制整个文件夹
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V 冗余模式。 让 scp 和 ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。

SCP 命令诊断
scp 返回0 成功时,不成功时返回值大于0

SCP 命令不需要输入用户密码的使用方法

在两台机器的两个用户之间建立安全的信任关系后,可实现执行scp命令时不需要输入用户密码。

1. 在机器A上root用户执行 ssh-keygen 命令,生成建立安全信任关系的证书。

[root@A root]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <– 直接输入回车
Enter passphrase (empty for no passphrase): <– 直接输入回车
Enter same passphrase again: <– 直接输入回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is: ……

注意:在程序提示输入 passphrase 时直接输入回车,表示无证书密码。
上述命令将生成私钥证书 id_rsa 和公钥证书 id_rsa.pub,存放在用户目录的 .ssh 子目录中。

2. 将公钥证书 id_rsa.pub 复制到机器B的root目录的.ssh子目录中,同时将文件名更换为authorized_keys。

[root@A root]# scp -p .ssh/id_rsa.pub root@机器B的IP:/root/.ssh/authorized_keys
[email protected]’s password: <– 输入机器B的root用户密码

在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器B的root用户密码。
经过以上2步,就在机器A的root和机器B的root之间建立安全信任关系。下面我们看看效果:

[root@A root]# scp -p test root@机器B的IP地址:/root

成功了!真的不再需要输入密码了。

来源:http://www.21andy.com/blog/20100911/1943.html
本人有修改。

===========================================

6.
http://bbs.chinaunix.net/thread-3725155-1-1.html
bash和sh的不同点?高手指点指点下吧









猜你喜欢

转载自janckywong.iteye.com/blog/1975870