Hugo Bilberry First commit to gitea@cowbay.org
This commit is contained in:
42
recycle/2017-sifu-baseball-error.md
Normal file
42
recycle/2017-sifu-baseball-error.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: 棒球-2017/08/23 世大運 台灣對南韓 失誤集錦
|
||||
categories: 棒球
|
||||
date: 2017-08-24 09:10:46
|
||||
tags: [棒球]
|
||||
---
|
||||
|
||||
##世大運 台灣對南韓 六局上 左外野蘇智傑接到安打球後未即時回傳 隱形的失誤
|
||||
|
||||
<video width="720" height="480" controls>
|
||||
<source src="/media/2017-08-24_08-58-439.mp4">
|
||||
</video>
|
||||
|
||||
|
||||
2017/08/23 世大運 台灣對南韓 六局上 左外野蘇智傑接到安打球後不知道在發什麼呆,顧著傻笑,未即時回傳,讓壘上的跑者順利回到本壘得分。蘇智傑表示當下沒有想到這個 play,
|
||||
|
||||
# **那請問你當下在想什麼play?**
|
||||
|
||||
## 世大運 台灣對南韓 八局下 陳重廷 在三壘被牽制出局
|
||||
|
||||
<video width="720" height="480" controls>
|
||||
<source src="/media/2017-08-24_16-57-244.mp4">
|
||||
</video>
|
||||
|
||||
跑者在三壘,對方是左投,面對的是一壘方向,這樣還能被抓到,真不知道該說什麼了。
|
||||
|
||||
#再來是比較「一般」的失誤...
|
||||
|
||||
<video width="720" height="480" controls>
|
||||
<source src="/media/2017-08-25_08-23-204.mp4">
|
||||
</video>
|
||||
|
||||
二壘手范國辰內野滾地球沒處理好,這個比較算是場地安打,球碰到紅土和草皮的交界產生不規則的彈跳,但是這個應該可以提早趨前處理,避免這情況發生。
|
||||
|
||||
<video width="720" height="480" controls>
|
||||
<source src="/media/2017-08-25_08-26-402.mp4">
|
||||
</video>
|
||||
|
||||
|
||||
|
||||
|
||||
中外野手岳東華對球的落點判斷錯誤,追球追過頭了。讓打者多進一個壘包
|
||||
100
recycle/cal-power-post.md
Normal file
100
recycle/cal-power-post.md
Normal file
@@ -0,0 +1,100 @@
|
||||
---
|
||||
title: 筆記-電費計算
|
||||
categories: 筆記
|
||||
date: 2017-08-22 17:30:46
|
||||
tags: [筆記]
|
||||
---
|
||||
|
||||
```ASP
|
||||
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
|
||||
<title>電費計算</title>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=big5">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<%
|
||||
deg = Request.Form("txt1")
|
||||
|
||||
'Response.write deg
|
||||
|
||||
|
||||
if deg >=0 and deg <=120 then
|
||||
total_cost = deg * 1.63
|
||||
cal_process = deg & " * 1.63 = " & total_cost
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "cal_process:" & cal_process
|
||||
elseif deg >=121 and deg <=330 then
|
||||
total_cost = (120-0)*1.63 + (deg-121)*2.38
|
||||
cal_process = "(120-0)*1.63 + (" & deg & "-121)*2.38 = " & total_cost
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "Non Summer cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr> <tr> <td>" & "<B>" & deg & "</B>" &"(" & deg& "-121)" &" </td> <td>2.38</td> <td>" & (deg-121)*2.38 &"</td> </tr> <tr> <td>331-500</td> <td>3.52</td> <td></td> </tr> <tr> <td>501-700</td> <td>4.61</td> <td></td> </tr> <tr> <td>701-1000</td> <td>5.42</td> <td></td> </tr> <tr> <td>1001~</td><td>6.13</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
total_cost = (120-0)*1.63 + (deg-121)*2.10
|
||||
cal_process = "(120-0)*1.63 + (" & deg & "-121)*2.10 = " & total_cost
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr> <tr> <td>" & "<B>" & deg & "</B>" &"(" & deg& "-121)" &" </td> <td>2.10</td> <td>" & (deg-121)*2.10 &"</td> </tr> <tr> <td>331-500</td> <td>2.89</td> <td></td> </tr> <tr> <td>501-700</td> <td>3.79</td> <td></td> </tr> <tr> <td>701-1000</td> <td>4.42</td> <td></td> </tr> <tr> <td>1001~</td><td>4.83</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
elseif deg >=331 and deg <=500 then
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.38 + (deg-331)*3.52
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.38 + (" & deg & "-331)*3.52 = " & total_cost
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.38</td><td>497.42</td></tr><tr><td>" & "<B>" & deg & "</B>" &"(" & deg & "-331) </td> <td>3.52</td> <td>"&(deg-331)*3.52 &"</td> </tr> <tr> <td>501-700</td> <td>4.61</td> <td></td> </tr> <tr> <td>701-1000</td> <td>5.42</td> <td></td> </tr> <tr> <td>1001~</td><td>6.13</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.10 + (deg-331)*2.89
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.10 + (" & deg & "-331)*2.89 = " & total_cost
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "Non Summer cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.10</td><td>497.42</td></tr><tr><td>" & "<B>" & deg & "</B>" &"(" & deg & "-331) </td> <td>2.89</td> <td>"&(deg-331)*2.89 &"</td> </tr> <tr> <td>501-700</td> <td>3.79</td> <td></td> </tr> <tr> <td>701-1000</td> <td>4.42</td> <td></td> </tr> <tr> <td>1001~</td><td>4.83</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
elseif deg >=501 and deg <=700 then
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.38 + (500-331)*3.52 + (deg-501)*4.61
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.38 + (500-331)*3.52 + (" & deg & "-501)*4.61=<B>" & total_cost & "</B><P>"
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.38</td><td>497.42</td></tr><tr><td>331-500</td> <td>3.52</td> <td>594.88</td></tr> <tr><td>" & "<B>" & deg & "</B>" &"(" & deg &"-501)</td> <td>4.61</td> <td>" & (deg-501)*4.61&"</td> </tr> <tr> <td>701-1000</td> <td>5.42</td> <td></td> </tr> <tr> <td>1001~</td><td>6.13</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.10 + (500-331)*2.89 + (deg-501)*3.79
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.10 + (500-331)*2.89 + (" & deg & "-501)*3.79=<B>" & total_cost & "</B><P>"
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "Non Summer cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.10</td><td>497.42</td></tr><tr><td>331-500</td> <td>2.89</td> <td>594.88</td></tr> <tr><td>" & "<B>" & deg & "</B>" &"(" & deg &"-501)</td> <td>3.79</td> <td>" & (deg-501)*3.79&"</td> </tr> <tr> <td>701-1000</td> <td>4.42</td> <td></td> </tr> <tr> <td>1001~</td><td>4.83</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
elseif deg >=701 and deg <=1000 then
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.38 + (500-331)*3.52 + (700-501)*4.61 + (deg-701)*5.42
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.38 + (500-331)*3.52 + (700-501)*4.61 + (" & deg & "-701)*5.42 = <B>" & total_cost & "</B><P>"
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.38</td><td>497.42</td></tr><tr><td>331-500</td> <td>3.52</td> <td>594.88</td></tr> <tr><td>501-700</td> <td>4.61</td> <td>917.39</td> </tr> <tr><td>" & "<B>" & deg & "</B>" & "(" & deg &"-701)</td> <td>5.42</td> <td>" & (deg-701)*5.42 &" </td> </tr> <tr> <td>1001~</td><td>6.13</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.10 + (500-331)*2.89 + (700-501)*3.79 + (deg-701)*4.42
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.10 + (500-331)*2.89 + (700-501)*3.79 + (" & deg & "-701)*4.42 = <B>" & total_cost & "</B><P>"
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "Non Summer cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.10</td><td>497.42</td></tr><tr><td>331-500</td> <td>2.89</td> <td>594.88</td></tr> <tr><td>501-700</td> <td>3.79</td> <td>917.39</td> </tr> <tr><td>" & "<B>" & deg & "</B>" & "(" & deg &"-701)</td> <td>4.42</td> <td>" & (deg-701)*4.42 &" </td> </tr> <tr> <td>1001~</td><td>4.83</td> <td></td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
elseif deg >=1001 then
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.38 + (500-331)*3.52 + (700-501)*4.61 + (1000-701)*5.42 + (deg-1001)*6.13
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.38 + (500-331)*3.52 + (700-501)*4.61 + (1000-701)*5.42 + (" & deg & "-1001)*6.13 = <B>" & total_cost & "</B><P>"
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.38</td><td>497.42</td></tr><tr><td>331-500</td> <td>3.52</td> <td>594.88</td></tr> <tr><td>501-700</td> <td>4.61</td> <td>917.39</td> </tr> <tr><td>701-1000</td> <td>5.42</td> <td>1620.58</td> </tr> <tr> <td>" & "<B>" & deg & "</B>" &"(" & deg &"-1001)" & "</td><td>6.13</td> <td>" & (deg-1001)*6.13 & "</td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
total_cost = (120-0)*1.63 + (330-121)*2.10 + (500-331)*2.89 + (700-501)*3.79 + (1000-701)*4.42 + (deg-1001)*4.83
|
||||
cal_process = "(120-0)*1.63 + (330-121)*2.10 + (500-331)*2.89 + (700-501)*3.79 + (1000-701)*4.42 + (" & deg & "-1001)*4.83 = <B>" & total_cost & "</B><P>"
|
||||
Response.write "Degree:" & deg &"<P>"
|
||||
Response.Write "Non Summer cal_process:" & cal_process
|
||||
Response.write "<table border=1> <tr> <td>Degree</td> <td>Cost</td> <td>sum </tr> <tr> <td>0-120</td> <td>1.63</td> <td>195.6</td></tr><tr> <td>121-330</td><td>2.10</td><td>497.42</td></tr><tr><td>331-500</td> <td>2.89</td> <td>594.88</td></tr> <tr><td>501-700</td> <td>3.79</td> <td>917.39</td> </tr> <tr><td>701-1000</td> <td>4.42</td> <td>1620.58</td> </tr> <tr> <td>" & "<B>" & deg & "</B>" &"(" & deg &"-1001)" & "</td><td>4.83</td> <td>" & (deg-1001)*4.83 & "</td> </tr> <tr><td>deg<td>total<td><B>" & total_cost & "</B></td></td></tr></table>"
|
||||
end if
|
||||
|
||||
%>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
```
|
||||
|
||||
運算結果
|
||||

|
||||
109
recycle/centos-aria-download-station.md
Normal file
109
recycle/centos-aria-download-station.md
Normal file
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: 筆記-CentOS7 + Aria + AriaWeb 下載管理工具
|
||||
categories: 筆記
|
||||
date: 2017-09-04 10:30:46
|
||||
tags: [筆記]
|
||||
---
|
||||
|
||||
最近又開始手癢,不斷的在切換各家的VPS方案,雖然GCE的速度最快,機器固定成本大概就是5美金,但是有個隱藏的成本,教學網頁上很少提到,就是流量會另外收費,而且收費的規則有點複雜。
|
||||
|
||||
比如說到「流出」到中國的頻寬是一個費用,「流出」到澳洲的又是另外一種費用。這個對於抓成本來說是個很大的困擾。而且如果有用來下載BT之類的活動,也根本無法預期會流量會往哪裡跑,之前測試了一天,抓了一片愛情動作片,然後從工作站上下載回來,一天就花了我0.9 USD,如果每天這樣抓,那光流量費用一個月就要快30 USD了啊!雖然速度很快,但是這成本,我無法接受啊!所以還是又換回了 VULTR,基本的500G流量很夠用了,總不會天天有新番號都要下載啊!
|
||||
|
||||
|
||||
----------
|
||||
好,前面都廢話...
|
||||
之前在Linux 底下抓BT,印象中就是用 rtorrent,後來意外發現有個工具叫做 [aria2](https://aria2.github.io/),不只支援BT,一般的http/https,新一點的 magnet(磁力) / Metalink (不知道啥)都可以抓,而且不知道為啥,在VPS抓這些BT/磁力 速度特別的快,比在本機抓快上了不知道幾倍!
|
||||
|
||||

|
||||
|
||||
不過 aria2c Web 有一些小問題,要進行操作的時候,常會跳一些警告視窗出現,碰到這種狀況,建議是登出再登入就可以了。
|
||||
|
||||
安裝過程很簡單,CentOS的yum 內建有支援aria,如果沒有,先安裝epel-release即可
|
||||
|
||||
|
||||
>yum install epel-release -y
|
||||
>yum install aria2 -y
|
||||
|
||||
arai2c web 的安裝稍微複雜一點點
|
||||
要先確認有安裝 WEB + PHP ,還有要安裝 php-xmlrpc 模組,不然會報錯。
|
||||
|
||||
>yum install php-xmlrpc -y
|
||||
|
||||
然後去[下載原始程式](https://aria2.github.io/)
|
||||
|
||||
下載回來,放在網站路徑底下解壓縮,然後編輯 config.php,把預設的帳號密碼改掉。
|
||||
|
||||
>$aria2_parameters['xml_rpc_username'] = 'admin';
|
||||
>$aria2_parameters['xml_rpc_password'] = 'passwordofadmin';
|
||||
|
||||
其他選項依照個人需求看要不要修改,接著執行以下指令
|
||||
|
||||
>aria2c --enable-rpc --rpc-listen-all=true
|
||||
|
||||
就可以開啟網頁進入Aria2C的界面。
|
||||

|
||||
|
||||
|
||||
要新增下載,就直接點 Add New Download,然後貼上torrent的路徑,或者直接貼上磁力的連結,剩下的就交給Aria去處理了。
|
||||
|
||||
不過這個界面滿陽春的,有點美中不足
|
||||
|
||||
1. 在介面上如果可以看到ratio就好了,個人習慣至少會抓到ratio >= 1才會停止,但是這邊看不到,有點麻煩。
|
||||
2. 下載完成後,如果可以作一些檔案管理,像是重新命名、移動、刪除就更好了。現在的介面只能針對下載佇列作移除。
|
||||

|
||||
|
||||
可以看到畫面右邊是檔案實際存放的路徑,但是在這邊沒有辦法作檔案管理,必須要進到console去處理。
|
||||
|
||||
我是另外搭配KodExplorer 來分享、下載。
|
||||

|
||||
|
||||
再來看一下vps的狀態,流量、cpu使用量也都還好。看來以後應該就會這樣用了吧,作為下載的中繼站這樣!
|
||||

|
||||
|
||||
|
||||
----------
|
||||
2017/09/05 更新
|
||||
|
||||
發現這樣的方式會有安全的漏洞,雖然在config裡面有設定rpc user/password 但是不知道為什麼,進入網頁都不會詢問帳號密碼。
|
||||
|
||||
測試用 .htpasswd / .htaccess 去限制存取也不行
|
||||
最後還是用老方法,修改 httpd.conf ,加入限制IP存取的語法
|
||||
```
|
||||
<Directory "/blockstorage/kod/aria">
|
||||
Options All
|
||||
AllowOverride All
|
||||
Require all denied
|
||||
Require ip 123.123.123.123 234.234.234.234
|
||||
</Directory>
|
||||
```
|
||||
|
||||
但是如果碰到沒固定IP的環境,可能就比較麻煩了..
|
||||
|
||||
**update**
|
||||
剛剛測試出來怎麼用 httpd.conf 加入密碼限制了
|
||||
```
|
||||
<Directory "/blockstorage/kod/aria">
|
||||
#Options All
|
||||
#AllowOverride All
|
||||
#Require all denied
|
||||
#Require ip 123.123.123.123 234.234.234.234
|
||||
#加入底下這幾行
|
||||
AuthType Basic
|
||||
AuthName "Restricted Content"
|
||||
AuthUserFile /var/.htpasswd
|
||||
Require valid-user
|
||||
</Directory>
|
||||
```
|
||||
|
||||
/var/.htpasswd 這個檔案可以放在任意路徑
|
||||
用 httpasswd 的命令產生
|
||||
|
||||
>htpasswd -c /var/.htpasswd user_name
|
||||
會詢問你密碼,輸入兩次後,檔案就產生了。
|
||||
|
||||
要進入頁面,就會出現詢問密碼的視窗
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
22
recycle/diff-capacity-128G-between-Linux-and-windows.md
Normal file
22
recycle/diff-capacity-128G-between-Linux-and-windows.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: 筆記-128G隨身碟真實容量?
|
||||
categories: 筆記
|
||||
date: 2017-08-28 11:10:46
|
||||
tags: [筆記]
|
||||
---
|
||||
|
||||
在PTT上看到相關的討論,頓時燃起好奇心,想來看看手邊的隨身碟在不同作業系統底下,各自會顯示多少容量?
|
||||
|
||||
測試樣本是這一支 TeamGroup的 128G隨身碟
|
||||

|
||||
|
||||
|
||||
在Windows 底下顯示的容量 127,816,040,448 bytes
|
||||
|
||||

|
||||
|
||||
在Linux 底下顯示 127,821,414,400 bytes
|
||||
|
||||

|
||||
|
||||
這就讓我有點好奇了,為什麼同一隻隨身碟在不同的作業系統底下,會顯示不同的容量?都已經不去計算格式化之後的「誤差」了呀?
|
||||
12
recycle/iphone-restore-wont-restore-apps.md
Normal file
12
recycle/iphone-restore-wont-restore-apps.md
Normal file
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: 雜念-我真的無法理解iPhone 「回復」備份,APP卻還要重新下載的設計邏輯
|
||||
categories: 雜念
|
||||
date: 2017-10-09 17:10:46
|
||||
tags: [雜念,iPhone]
|
||||
---
|
||||
|
||||
最近公司又開始iPhone8的換機潮,我也順便接手了同事的一支iPhone 6 PLUS。
|
||||
重設、還原自然是不在話下,但是明明系統已經「回復備份」,但是手機上的APP為何還要重新下載?
|
||||

|
||||
|
||||
回復系統大概10-20分鐘,後面下載這些APP跑了兩個小時還沒跑完。為什麼不一開始在備份的時候,就一併備份app呢?
|
||||
134
recycle/mksbackup-ghettovcb-in-windows.md
Normal file
134
recycle/mksbackup-ghettovcb-in-windows.md
Normal file
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: 筆記-MKSBackup & ghettoVCB 免費備份 vmware esx 上的虛擬機
|
||||
categories: 筆記
|
||||
date: 2017-08-10 15:30:46
|
||||
tags: [筆記,vmware]
|
||||
---
|
||||
|
||||
## 事先準備
|
||||
|
||||
|
||||
### FTP Server
|
||||
- 準備一個外接硬碟,連到控制電腦上(在這裡是 F )
|
||||
- Windows內安裝FTP Server (我用FileZilla)
|
||||
- 在FTP Server 上新增一個使用者,並指定家目錄到外接硬碟
|
||||
### 開啟VMWARE ESX SSH 登入
|
||||
這個就不多說了
|
||||
|
||||
|
||||
## 在Windows內安裝 MKSBackup
|
||||
MKSBackup 是由 [MagiKmon](http://www.magikmon.com/mksbackup/) 出產的一個備份工具,同時可以支援wbadmin(windows 備份程式,如圖)
|
||||

|
||||
同時也支援 Linux底下的 tar、以及這次的重點[ ghettoVCB](https://github.com/lamw/ghettoVCB) (VMWARE 備份工具)
|
||||
|
||||
沒有圖形界面,都是簡單的命令列指令,以及讀取編輯好的 ini檔作為設定,內建EMAIL通知,可以把備份的狀況郵寄給管理者。非常方便、好用。
|
||||
|
||||
這邊簡單描述一下在Windows底下的安裝過程
|
||||
|
||||
理論上,不管是x86/x64 都可以安裝,雖然是以python寫成,但是不需要安裝python,不過需要 Microsoft Visual C++ 2008 Redistributable Package,如果沒有安裝過,可以在這邊下載 [vcredist_x86.exe](http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf)
|
||||
|
||||
確認安裝好 Microsoft Visual C++ 2008 Redistributable Package之後,就可以在[官網下載 MKSBackup](http://www.magikmon.com/mksbackup/download.en.html),下載完成後,點兩下就進行安裝。安裝過程會詢問一些問題,參考圖片說明
|
||||

|
||||
|
||||
OK,到這邊,就完成了 MKSBackup在 Windows 底下的安裝
|
||||
接下來要進行 ghettoVCB 的部份。
|
||||
|
||||
|
||||
----------
|
||||
|
||||
## 確認 ghettoVCB安裝
|
||||
在進行安裝MKSBackup時,就會順便下載最新版的 ghettoVCB,檔案在安裝路徑底下的vmware 目錄中
|
||||

|
||||
|
||||
這樣就ok了,等一下再回頭來修改ghettoVCB的設定檔
|
||||
|
||||
|
||||
----------
|
||||
先來看看剛剛安裝的 MKSBackup可不可以執行
|
||||
輸入 mksbackup -h 確認看看,出現這樣的畫面就OK了
|
||||
|
||||

|
||||
|
||||
接著來修改 mksbackup.ini 設定email通知的部份
|
||||
|
||||
|
||||
用任何喜歡的編輯器編輯 mksbackup.ini(在安裝路徑下可以找到)
|
||||
設定郵件寄送
|
||||
```Java Script
|
||||
|
||||
## if you don't want to setup any email config or receive any email report
|
||||
#mail=no #如果mail=no就不會發信了,註解掉
|
||||
smtp_host=192.168.70.240 #輸入 Mail Server IP
|
||||
|
||||
# smtp_mode can be normal, ssl or tls #郵件寄送模式,就一般吧 省得還要處理走SSL/TLS可能造成的問題,直接註解掉也可以
|
||||
#smtp_mode=normal
|
||||
|
||||
# smtp_port can in 25, 465, 587 or other #SMTP PORT 註解掉,用預設
|
||||
#smtp_port=25
|
||||
|
||||
# smtp_login and smtp_password can be used if authentication is required by SMTP server
|
||||
如果寄件要帳號密碼,在這邊輸入
|
||||
#smtp_login=ID
|
||||
#smtp_password=PASS
|
||||
|
||||
#sender is required #輸入寄件者email
|
||||
sender=mksbackup@abc.com
|
||||
|
||||
# recipients is a list of space separated email addresses
|
||||
收件者,可以有多個收件者,用空白鍵隔開
|
||||
recipients=chchang@abc.com
|
||||
|
||||
# maximum size of an attachment in (K)
|
||||
附加檔案最大容量
|
||||
#attachment_size=100 註解掉
|
||||
|
||||
底下就是一些備份工作的內容設定,我是都先全部拿掉,只剩下 VMWARE這塊,看起來比較簡單。
|
||||
|
||||
[VMWARE_FROM_WINDOWS]
|
||||
#備份工作名稱,注意大小寫,雖然在windows底下,但是執行的時候,大小寫也要一致才能正確執行。
|
||||
program=ghettovcb
|
||||
#預設,不用改
|
||||
host=192.168.70.220
|
||||
#VMWARE ESX主機 IP
|
||||
port=22
|
||||
#SSH Port 預設就是22
|
||||
login=root
|
||||
#ESX登入帳號
|
||||
password=ROOTpasswordatESX
|
||||
#ESX登入密碼
|
||||
#identity_file=C:\magik\id_rsa
|
||||
#沒用到
|
||||
local=d:\magik\vmware
|
||||
#本地MKSBackup工作目錄,就輸入安裝目錄
|
||||
remote_temp=/tmp
|
||||
#ESX主機上工作目錄,輸入 /tmp
|
||||
script=ghettoVCB.sh
|
||||
#要執行的命令稿
|
||||
global_conf=ghettoVCB.conf
|
||||
#設定檔
|
||||
vm_list=NAMED-245
|
||||
#要備份的VM名稱,有多個的話,用空白隔開
|
||||
#取得VM名稱的方法,可以ssh到ESX主機後,下 esxcli vm process list
|
||||
#ftp_local=ftp://192.168.10.117/f/vmware
|
||||
#MKSBackup預設可以提供FTP Server功能,但是我一直測試不出來,放棄
|
||||
#destination=<copy=mon-fri>ftp://ftpid:ftppassword@192.168.10.117/vmware/${vm}
|
||||
#如果要使用FTP功能,從ESX上備份到FTP Server的話,可以用這個設定,但是這次沒有要這麼作
|
||||
### destination=<copy=thu>f:\vmbackup\${vm}-%Y-%m-%d
|
||||
#這次要測試直接備份到外接硬碟,所以直接輸入備份路徑就可以了,當然要讓ftp那邊能夠存取得到
|
||||
|
||||
|
||||
底下先不用管
|
||||
#<backup=mon-fri>ftp://localhost/${vm}
|
||||
#<copy=fri>/backup/vmware/${vm}-${nweekdayname}
|
||||
#<copy=sat>ftp://localhost/${vm}
|
||||
# -scp is required on last version of PuTTY
|
||||
#scp_bin="C:\Program Files\PuTTY\pscp.exe" -scp
|
||||
```
|
||||
|
||||
-----
|
||||
###要修改的小地方
|
||||
|
||||
ghettoVCB.sh 檔名儲存的變數改成
|
||||
`+%F-%H-%m`
|
||||
格式會是這樣
|
||||
`2017-08-11-01-08`
|
||||
19
recycle/one-job-3-skills.md
Normal file
19
recycle/one-job-3-skills.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: 雜念-一個職缺,開三種職務的能力,台灣慣老闆真的hen會..
|
||||
categories: 雜念
|
||||
date: 2017-10-16 17:30:46
|
||||
tags: [雜念]
|
||||
---
|
||||
|
||||
找一個 MIS 來看看 全廉工坊系統家具這家公司開了哪些能力需求?
|
||||
|
||||
|
||||
|
||||
1. 管理維護公司系統 (很ok啊! MIS 本職嘛)
|
||||
2. 具WEB程式設計能力 (ㄟㄟㄟ,你找MIS捏,還要會寫WEB Application?)
|
||||
3. 具資料庫管理及應用能力 (MIS 你還要會DBA唷!)
|
||||
|
||||
就不知道這個職缺有沒有給三倍薪資就是了...
|
||||
|
||||
|
||||

|
||||
17
recycle/pan-download-test.md
Normal file
17
recycle/pan-download-test.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: 下載-Pan Download 百度網盤下載工具
|
||||
categories: 筆記
|
||||
date: 2017-08-23 13:10:46
|
||||
tags: [筆記,百度云]
|
||||
---
|
||||
|
||||
[Pan Download V1.3.5](http://bit.ly/2wm2gK3)
|
||||
|
||||
感覺上,用這個下載的確是有比較快。
|
||||
|
||||
底下是剛剛測試的截圖
|
||||

|
||||
|
||||
今天(2017/08/25)下載的情況,還是很快!
|
||||
|
||||

|
||||
70
recycle/test-mardown-bold-in-quote.md
Normal file
70
recycle/test-mardown-bold-in-quote.md
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: 測試-MarkDown 程式碼語法測試
|
||||
categories: 筆記
|
||||
date: 2017-08-14 13:10:46
|
||||
tags: [筆記,markdown]
|
||||
---
|
||||
|
||||
<pre><B>引用粗體</b></Pre>
|
||||
|
||||
``` JavaScript
|
||||
VM_BACKUP_VOLUME=/vmfs/volumes/3TONQNAP2BAY/ghe-backup
|
||||
DISK_BACKUP_FORMAT=thin
|
||||
VM_BACKUP_ROTATION_COUNT=1
|
||||
POWER_VM_DOWN_BEFORE_BACKUP=0
|
||||
ENABLE_HARD_POWER_OFF=0
|
||||
ITER_TO_WAIT_SHUTDOWN=3
|
||||
POWER_DOWN_TIMEOUT=5
|
||||
ENABLE_COMPRESSION=0
|
||||
VM_SNAPSHOT_MEMORY=0
|
||||
VM_SNAPSHOT_QUIESCE=0
|
||||
ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0
|
||||
#ENABLE_NON_PERSISTENT_NFS=0
|
||||
#UNMOUNT_NFS=0
|
||||
NFS_SERVER=172.30.0.195
|
||||
NFS_MOUNT=/nfsshare
|
||||
NFS_LOCAL_NAME=nfs_storage_backup
|
||||
NFS_VM_BACKUP_DIR=mybackups
|
||||
SNAPSHOT_TIMEOUT=15
|
||||
EMAIL_LOG=0
|
||||
EMAIL_SERVER=auroa.primp-industries.com
|
||||
EMAIL_SERVER_PORT=25
|
||||
EMAIL_DELAY_INTERVAL=1
|
||||
EMAIL_TO=auroa@primp-industries.com
|
||||
EMAIL_FROM=root@ghettoVCB
|
||||
WORKDIR_DEBUG=0
|
||||
VM_SHUTDOWN_ORDER=
|
||||
VM_STARTUP_ORDER=
|
||||
```
|
||||
|
||||
----------
|
||||
|
||||
|
||||
VM_BACKUP_VOLUME=/vmfs/volumes/3TONQNAP2BAY/ghe-backup
|
||||
DISK_BACKUP_FORMAT=thin
|
||||
VM_BACKUP_ROTATION_COUNT=1
|
||||
POWER_VM_DOWN_BEFORE_BACKUP=0
|
||||
ENABLE_HARD_POWER_OFF=0
|
||||
ITER_TO_WAIT_SHUTDOWN=3
|
||||
POWER_DOWN_TIMEOUT=5
|
||||
ENABLE_COMPRESSION=0
|
||||
VM_SNAPSHOT_MEMORY=0
|
||||
VM_SNAPSHOT_QUIESCE=0
|
||||
ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=0
|
||||
#ENABLE_NON_PERSISTENT_NFS=0
|
||||
#UNMOUNT_NFS=0
|
||||
NFS_SERVER=172.30.0.195
|
||||
NFS_MOUNT=/nfsshare
|
||||
NFS_LOCAL_NAME=nfs_storage_backup
|
||||
NFS_VM_BACKUP_DIR=mybackups
|
||||
SNAPSHOT_TIMEOUT=15
|
||||
EMAIL_LOG=0
|
||||
EMAIL_SERVER=auroa.primp-industries.com
|
||||
EMAIL_SERVER_PORT=25
|
||||
EMAIL_DELAY_INTERVAL=1
|
||||
EMAIL_TO=auroa@primp-industries.com
|
||||
EMAIL_FROM=root@ghettoVCB
|
||||
WORKDIR_DEBUG=0
|
||||
VM_SHUTDOWN_ORDER=
|
||||
VM_STARTUP_ORDER=
|
||||
|
||||
Reference in New Issue
Block a user