iT邦幫忙

0

SVN要如何阻擋大型檔案上傳

在管理SVN時很怕user把這裡當成fileserver而放入一些跟版本控制無關的檔案,例如影片檔、執行檔等等...請問SVN有沒有辦法可以設定阻擋某些副檔名的上傳或者設定檔案大小的限制,請求各位先進的教學~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
IT 癡
iT邦高手 1 級 ‧ 2020-10-22 11:41:28

設備上限制或管理,永遠是最後一步, "人" 習慣不改,下次你要擋什麼?再下次呢?

宣導加宣導,說主機上會隨時進行觀察,宣導幾次後開始懲罰,查到一次扣一日薪或請全公司星巴克 ...... 當然要先跟主管或老闆溝通、取得支持,你管理才輕鬆

rich6607 iT邦新手 5 級 ‧ 2020-10-22 18:11:54 檢舉

謝謝您的建議,但人永遠是最難控管的因素,所以我找到了方法,就是用hook裡的pre-commit,在user commit之前就有些條件可以先判斷能否上傳:

#!/bin/sh
REPOS="$1"
TXN="$2"
#此處更改大小限制,這裏是5M
MAX_SIZE=50000000
#此處增加限制文件後綴名
FILTER='.(輸入附檔名)$'

SVNLOOK=/usr/bin/svnlook

LOGMSG=$SVNLOOK log -t "$TXN" "$REPOS" | wc -c

if [ "$LOGMSG" -lt 0 ]
then
echo "Please enter a message with more than 0 words" 1>&2
exit 1
fi

files=$($SVNLOOK changed -t $TXN $REPOS |cut -d " " -f 4-)

rc=0

echo "$files" | while read f;
do
if echo $f|tr A-Z a-z|grep -Eq $FILTER;
then
echo "do not upload type of ($FILTER) file" >&2
exit 1;
fi

filesize=$($SVNLOOK cat -t "$TXN" "$REPOS" "$f" | wc -c)

if [ "$filesize" -gt "$MAX_SIZE" ]
then
echo "your file is bigger than 5M (must be less than or equal to $MAX_SIZE bytes)" >&2
exit 1
fi
done

我要發表回答

立即登入回答