Unix
多個目錄隨著使用者權限的變化而更新
我在一台裝有 FreeBSD7.3 的機器上有多個使用者。每個使用者都有自己的站點(只有一個)。每個站點都是主站點的副本,略有不同(即數據庫配置、模板文件)。
這就像一台機器上有許多不同使用者的 Wordpress。
問題是:
我已經為 master-site 做了一個更新檔。我如何一次更新所有這些站點,正確地更改使用者權限和所有權。
IE:我有類似的更新檔:
/temp/patch/www/
–index.php –includes
/system.php
而且我有許多使用者具有相同的目錄結構和一些其他文件:
/home/mike/www/mikebestsite.com/
–index.php –index2.php
–includes
/system.php
/home/john/www/superjohnsite.com/
–index.php –includes
/system.php
–includes/break.php
/home/larry/www/larry-e-king.com/
–index.php –includes
/system.php
–css/larry.css
這是一個快速的 bash 片段,應該可以為您解決問題。
我假設其中的所有內容
/home
都是一個目錄,並且匹配項*\.com
是您要替換的站點index.php
和includes/system.php
. 如果此邏輯不合適,您可能需要自己進行一些修改。我已經在有限的限制內對其進行了測試。確保
ls -ld
FreeBSD 中的輸出在第三個欄位中包含使用者,在第四個欄位中包含組。此外,--reply=yes
是一種 GNU 主義。您可能必須使用-f
或等效的 BSD 來強制替換現有文件而無需互動。for D in `find /home -type d -name '*\.com'` do myuser=`ls -ld $D | awk '{print $3}'` mygroup=`ls -ld $D | awk '{print $4}'` echo "Updating ${D}..." cp ${D}/index.php ${D}/index.php.ORIG cp ${D}/includes/system.php ${D}/includes/system.php.ORIG cp --reply=yes /path/to/temp/patch/www/index.php ${D} cp --reply=yes /path/to/temp/patch/www/includes/system.php ${D}/includes chown $myuser:$mygroup ${D}/index.php chown $myuser:$mygroup ${D}/includes/system.php echo "--------------------------------" echo "" done