FreeBSD Shell Script的寫法??

missionstart

M.S.L.
已加入
3/22/06
訊息
618
互動分數
0
點數
16
不好意思
最近一直在做機械式的指令-.-...
想說看看能不能寫成sh檔
直接執行...
可是上網找了找
又不知道該怎麼寫這個-.-
所以來版上問問~
請各位大大教教我吧...
問題就是...
最近我把A主機上的MAIL移植到B主機去
但是我把本來A主機上的MAIL壓成壓縮檔
去B主機解壓縮之後
本來目錄的使用者都變成root...
但是在A主機上使用者是本來mail的user
所以最近我一直在改...
chown aaaa:mail aaaa
chown bbbb:mail bbbb
chown cccc:mail cccc
chown dddd:mail dddd
但是mail超多人的-.-
改得很累...
想說能不能把所有的AAAA,BBBB,CCCC,DDDD寫成一個文件檔.txt
然後再寫一個sh
讓他自動執行把chown user:mail user裡的user替換成文件檔中的名稱
文件檔中的user是用豆號和開也好用是換行也好
這樣在如何寫呢...
不好意思
小弟笨拙...
還請各位大大幫忙
 

snn

初級會員
已加入
4/8/04
訊息
14
互動分數
0
點數
0
備份時用tar時,可使用參數-p 保留檔案的permission.
解壓縮時,可用參數--same-owner,維持檔案的ownership
 

missionstart

M.S.L.
已加入
3/22/06
訊息
618
互動分數
0
點數
16
蝦咪...
就這樣...
那我辛苦半天...
就是因為沒有加參數...
但是我還是想知道怎麼寫SH-.-@@...
 

missionstart

M.S.L.
已加入
3/22/06
訊息
618
互動分數
0
點數
16
另一問
就是
如果在移植後的電腦
並沒有原本的使用者時
那我用這方法解壓縮之後目錄的權限
還會是原本的使用者嗎?
因為我這台電腦根本就沒有那個使用者
我想問這問題就是
有些mail已經很舊了
一些人都離開公司了
但是mail還在
我想把目前還有在用的使用者
加到移植後的電腦
但新電腦就沒有舊電腦裡
那些不在公司裡的人的使用者了
本來是想說直接把舊電腦的master.passwd跟group還有login.conf都抓過去
作成資料庫
可是這樣我就得一個一個比對現有使用者跟不在公司的使用者了...
因為上一任做個工作的人
沒有把原本的資料留給我...
所以我要比對還蠻難的-.-
 

snn

初級會員
已加入
4/8/04
訊息
14
互動分數
0
點數
0
第一個情形如果要用shell寫,可以參考:
vi chm.sh
----------
#!/bin/bash
for username in $(ls /var/mail/)
do
chown $username:mail $username
done
----------
前提是使用者帳號要存在
 

snn

初級會員
已加入
4/8/04
訊息
14
互動分數
0
點數
0
另一問
就是
如果在移植後的電腦
並沒有原本的使用者時
那我用這方法解壓縮之後目錄的權限
還會是原本的使用者嗎?
因為我這台電腦根本就沒有那個使用者
我想問這問題就是
有些mail已經很舊了
一些人都離開公司了
但是mail還在
我想把目前還有在用的使用者
加到移植後的電腦
但新電腦就沒有舊電腦裡
那些不在公司裡的人的使用者了
本來是想說直接把舊電腦的master.passwd跟group還有lo...

如果離開公司的使用者未有存取郵件的記錄,你可以用find指令來找出存取(access)或更動(modify)的檔案清單, 以未存取郵件檔案來判斷是否已離開公司,但最好的方法還是取得現有使用者名單來處理較佳.

find的用法,找一個時間基準檔案,比如說 /var/mail/kkkk
find /var/mail/ -cnewer /var/mail/kkkk -print
比kkkk使用者晚,而且有存取標記的檔案就會列出(還在公司)

利用find的結果,就可以進行備份與複製的script了.
 

missionstart

M.S.L.
已加入
3/22/06
訊息
618
互動分數
0
點數
16
感謝snn大大的回答
小弟馬上來測試看看
這幾天放假~就沒去公司拉
 
▌延伸閱讀