利用 find 指令參數-atime -Btime -ctime -mtime 來刪除檔案
時間參數的用法
-atime 檔案的最後存取時間到find 的執行時間差
-amin n 同 -atime 只是n是以分為單位
-Btime 檔案的inode 建立時間到find 的執行時間差,這參數限用於Freebsd
-ctime 檔案的狀態資訊最後修改的時間到find 的執行時間差
-cmin n 同 -ctime只是n是以分為單位
-mtime 檔案的最後修改時間到find 的執行時間差
-mmin n 同 -mtime只是n是以分為單位
find 在 linux 和 freebsd上的差異
在Freebsd上有單位,在linux上沒單位,預設的數字代表的就是天。
[FREEBSD]
-mtime n[smhdw]
[LINUX]
-mtime n
freebsd上可以用的單位是 s m h d w,在linux上,則沒單位可用,n代表的就是天數。
使用範例
部分範例是Freebsd only, linux上無單位可用):
在 7 天前有修改過的檔案,例如今天是6/10,則7天前是6/4
$ find ./ -mtime 7
在 7 天之內有修改過的檔案,例如今天是6/10,則7天內則是6/4~6/10 的檔案都列出
$ find ./ -mtime -7
在 7 天以前有修改過的檔案,例如今天是6/10,則7天6/4 以前的檔案都列出
$ find ./ -mtime +7
找出 240天以前的檔案並刪除,別漏了240d前的加號,lunux上請拿掉d。
$ find ./ -mtime +240d -exec rm {} \;
在 7 天之內有修改過的檔案,以下三個是同義:
$ find ./ -mtime -7d
$ find ./ -mtime -7
$ find ./ -mtime -1w
不小心把檔案解壓,沒放到特定的目錄,因此要刪除,找出5分鐘內建立的檔案
$ find -cmin -5
刪除5分鐘內建立的檔案
$ find -cmin -5 -type f -exec rm -rf {} \;
在linux/ freebsd 中查找檔案最強的就是 find,他有一個參數相當好用:-exec
參數的意思是將找到的結果丟給 -exec 後面的參數內容去執行,如能活用,必為利器。
範例一
將/tmpl下找到的.txt檔拷貝到家目錄的 /txt
# find /tmp/ -type f -name "*.txt" -exec cp {} ~/txt \;
有關find的指令不再說明,只說明 -exec 後方的部分
-exec cp {} ~/txt \;
cp 指令
{} 找到的結果檔案
~/txt cp 的參數
\; 指令的結束符號
將所有705 權限群組為 cnxusers的檔案更改權限為700
# find ./ -perm 705 -group cnxusers -exec chmod 700 {} \;
範例二
設計刪除七天前的備份檔
1、創建保存備份文件的目錄:/home/wwwrootbak
cd /home
mkdir wwwrootbak
2、創建備份script文件:/home/wwwrootbak/wwwrootbak.sh
cd /home
cd wwwrootbak
touch wwwrootbak.sh
vim wwwrootbak.sh
輸入以下內容:
#!/bin/sh
BK_DR=/home/wwwrootbak #備份文件存放路徑
DB_DR=/home/wwwroot
DAYS=7 #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份
LINUX_USER=root #系統用戶名
date=` date +%Y%m%d `
tar zcvf $BK_DR/wwwroot$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改備份數據庫文件的所有者
find $BK_DR -name "wwwroot*" -type f -mtime +$DAYS -exec rm {} \; #刪除7天前的備份文件(注意:{} \;中間有空格)
deldate=` date -d -7day +%Y%m%d ` #刪除ftp服務器空間7天前的備份
ftp -n< open 192.168.1.1 21 #打開ftp服務器。21為ftp端口
user admin 123456 #用戶名、密碼
binary #設置二進制傳輸
cd wwwrootbak #進入ftp目錄
lcd /home/wwwrootbak #列出本地目錄
prompt
mput wwwroot$date.tar.gz wwwroot$date.tar.gz #上傳目錄中的文件
mdelete wwwroot$deldate.tar.gz wwwroot$deldate.tar.gz #刪除ftp空間7天前的備份
close
bye !
3、修改文件屬性,使其可執行
chmod +x /home/wwwrootbak/wwwrootbak.sh
4、修改/etc/crontab
vi /etc/crontab
在下面添加
5 2 * * * root /home/wwwrootbak/wwwrootbak.sh
表示每天凌晨2點5分執行備份
5、重新啟動crond使設置生效
/etc/rc.d/init.d/crond restart
#yum install -y vixie-cron安裝計劃任務,某些系統上可能沒有預裝
chkconfig crond on
#設為開機啟動
service crond start
#啟動
每天你在/home/wwwrootbak目錄下面可以看到類似wwwroot20111103.tar.gz這樣的壓縮文件
如果需要恢覆文件的時候,只需要把這個文件解壓即可
解壓縮:tar -zxvf wwwroot20111103.tar.gz
-atime 檔案的最後存取時間到find 的執行時間差
-amin n 同 -atime 只是n是以分為單位
-Btime 檔案的inode 建立時間到find 的執行時間差,這參數限用於Freebsd
-ctime 檔案的狀態資訊最後修改的時間到find 的執行時間差
-cmin n 同 -ctime只是n是以分為單位
-mtime 檔案的最後修改時間到find 的執行時間差
-mmin n 同 -mtime只是n是以分為單位
find 在 linux 和 freebsd上的差異
在Freebsd上有單位,在linux上沒單位,預設的數字代表的就是天。
[FREEBSD]
-mtime n[smhdw]
[LINUX]
-mtime n
freebsd上可以用的單位是 s m h d w,在linux上,則沒單位可用,n代表的就是天數。
使用範例
部分範例是Freebsd only, linux上無單位可用):
在 7 天前有修改過的檔案,例如今天是6/10,則7天前是6/4
$ find ./ -mtime 7
在 7 天之內有修改過的檔案,例如今天是6/10,則7天內則是6/4~6/10 的檔案都列出
$ find ./ -mtime -7
在 7 天以前有修改過的檔案,例如今天是6/10,則7天6/4 以前的檔案都列出
$ find ./ -mtime +7
找出 240天以前的檔案並刪除,別漏了240d前的加號,lunux上請拿掉d。
$ find ./ -mtime +240d -exec rm {} \;
在 7 天之內有修改過的檔案,以下三個是同義:
$ find ./ -mtime -7d
$ find ./ -mtime -7
$ find ./ -mtime -1w
不小心把檔案解壓,沒放到特定的目錄,因此要刪除,找出5分鐘內建立的檔案
$ find -cmin -5
刪除5分鐘內建立的檔案
$ find -cmin -5 -type f -exec rm -rf {} \;
在linux/ freebsd 中查找檔案最強的就是 find,他有一個參數相當好用:-exec
參數的意思是將找到的結果丟給 -exec 後面的參數內容去執行,如能活用,必為利器。
範例一
將/tmpl下找到的.txt檔拷貝到家目錄的 /txt
# find /tmp/ -type f -name "*.txt" -exec cp {} ~/txt \;
有關find的指令不再說明,只說明 -exec 後方的部分
-exec cp {} ~/txt \;
cp 指令
{} 找到的結果檔案
~/txt cp 的參數
\; 指令的結束符號
將所有705 權限群組為 cnxusers的檔案更改權限為700
# find ./ -perm 705 -group cnxusers -exec chmod 700 {} \;
範例二
設計刪除七天前的備份檔
1、創建保存備份文件的目錄:/home/wwwrootbak
cd /home
mkdir wwwrootbak
2、創建備份script文件:/home/wwwrootbak/wwwrootbak.sh
cd /home
cd wwwrootbak
touch wwwrootbak.sh
vim wwwrootbak.sh
輸入以下內容:
#!/bin/sh
BK_DR=/home/wwwrootbak #備份文件存放路徑
DB_DR=/home/wwwroot
DAYS=7 #DAYS=7代表刪除7天前的備份,即只保留最近7天的備份
LINUX_USER=root #系統用戶名
date=` date +%Y%m%d `
tar zcvf $BK_DR/wwwroot$date.tar.gz $DB_DR
chown -R $LINUX_USER:$LINUX_USER $BK_DR #更改備份數據庫文件的所有者
find $BK_DR -name "wwwroot*" -type f -mtime +$DAYS -exec rm {} \; #刪除7天前的備份文件(注意:{} \;中間有空格)
deldate=` date -d -7day +%Y%m%d ` #刪除ftp服務器空間7天前的備份
ftp -n< open 192.168.1.1 21 #打開ftp服務器。21為ftp端口
user admin 123456 #用戶名、密碼
binary #設置二進制傳輸
cd wwwrootbak #進入ftp目錄
lcd /home/wwwrootbak #列出本地目錄
prompt
mput wwwroot$date.tar.gz wwwroot$date.tar.gz #上傳目錄中的文件
mdelete wwwroot$deldate.tar.gz wwwroot$deldate.tar.gz #刪除ftp空間7天前的備份
close
bye !
3、修改文件屬性,使其可執行
chmod +x /home/wwwrootbak/wwwrootbak.sh
4、修改/etc/crontab
vi /etc/crontab
在下面添加
5 2 * * * root /home/wwwrootbak/wwwrootbak.sh
表示每天凌晨2點5分執行備份
5、重新啟動crond使設置生效
/etc/rc.d/init.d/crond restart
#yum install -y vixie-cron安裝計劃任務,某些系統上可能沒有預裝
chkconfig crond on
#設為開機啟動
service crond start
#啟動
每天你在/home/wwwrootbak目錄下面可以看到類似wwwroot20111103.tar.gz這樣的壓縮文件
如果需要恢覆文件的時候,只需要把這個文件解壓即可
解壓縮:tar -zxvf wwwroot20111103.tar.gz
留言
張貼留言