一次 untar 多個files

我現在多是用到sites/all/modules 用 wget 更新模組的
wget [url]
因為快, 又免了upload 的麻煩
複製了 drupal.org 內模組的下載url
貼到putty
但untar 不可以用萬用字符 *

find [folder] -iname "*.tar" -exec tar xvfz {} \;

google 大神果然最強!

使用 rsync 作 windows 同步備份

[2008-12-29]: 新增batch file, 寫入log

一直在找一個可以自動backup 到網路的軟體, 但 Mozy 只有2G
只計算我的相片已經 25G 以上....
我還想backup 一些常修改的, 日常會幫助我的小程式..
要求簡單:

  • 自動定時 backup
  • backup 到網路上
  • 網路硬碟當然越大越好

最後, 我將我的資料都定時backup 到我 dreamhost 的 350G 網路空間上了

近來我在做website 的backup 的時候,
使用過rsync 這一個linux 的命令, 發覺它很也強大

  1. 使用rsync 算法的增量式backup, 在只有檔案經過修改或者新增的時候才傳送, 否則略過
  2. 可以使用ssh 傳送, 防止傳送時檔案資料外洩
  3. 使用ssh 傳送也即是可以使用ssh key pair 作自動authorize, 不用輸入密碼
  4. 第一次的上傳可以使用ftp (會比用ssh 快, 第一次上傳25G 的資料可痛苦了...)

google 一下 "rsync windows",
便開始了一個竟然要花一星期空餘時間才完成的工作.....(是我太慢)
地雷相當的多...
而且網上的教學大都是本地linux 機, windows 機的實例少而且沒有詳盡說明...

rsync in windows 的實現方法有使用 deltacopy 或者 cygwin
但我的電腦使用 deltacopy 一直連不到 host, 可能是使用了 non-installer 的關係
我打開 deltacopy 發覺其實都是一個 cygwin
而且有現成的 rsync.exe ssh.exe 可以使用 (估計直接來自cygwin)
那唯有自己手動做命令行....

先試 rsync 命令: (有需要的話, 要手動加環境變數....)

rsync.exe -avz [localDir] [user]@[host]:[remoteDir]

輸入密碼
沒問題的話, remoteDir 內應該已經同步了 (可以先用細小的檔案試)
這樣便完成了手動的部份

要使用安全的連線, 當然是使用ssh

rsync.exe -avz [localDir] -e ssh [user]@[host]:[remoteDir]

但仍然要輸入密碼, 不能自動化
要免除輸入密碼, 便要使用ssh key 了
地雷都在這.....

要使用ssh key:

rsync.exe -avz [localDir] -e "ssh -i [private.ppk]" [user]@[host]:[remoteDir]

但一直不能正確的輸入passphrase
連沒有passphrase 的 key pair 都一直在問passphrase
這問題我一直不能解決
上網也找不到相同的個案...
PuTTygen 的key pair 在不知道原因之下,
ssh.exe 一定會問passphrase, 而我一直使用之前一直使用的 private key
一直問passphrase, 但明明 這private key 已經是沒有passphrase 的...

最後安裝了一個完整的cygwin, openssh 都沒有幫助
最後死氣的連command line keygen 都一併跟著做:
使用了cygwin 的 ssh-keygen (openssh package)

ssh-keygen -t rsa

rsync.exe -avz [localDir] -e "ssh -i [id_rsa]" [user]@[host]:[remoteDir]

天呀....

再schedule bat file:

FOR /f "tokens=1-4 delims= " %%D in ('echo %date:/= %') do set DATEN=%%F%%E%%D
rsync.exe -avz [localDir] -e "ssh -i [id_rsa]" [user]@[host]:[remoteDir] >> "log/backup_%DATEN%"
rsync.exe -avz log -e "ssh -i [id_rsa]" [user]@[host]:[remoteDir]/log

留意第一行是設定一個用日期作檔名的log file
第二行將rsync 的輸出寫到log file
最後將log file 都sync 到server

Project inmediahk.net

inmediahk.net 的 design 和 IA 都不是我的作品
但 frontend(html, js, css) 和 Drupal backend 都是我一手包辦
網站的平面設計並不是太複雜, 只是首頁右欄算是比較特別
但這個網站的日流量, 訪客數, 內容量是我的作品之中最強的
所以花了些心思在優化模組, cache等等的事上面
也有幫忙管服務器

是第一個中型網站的作品

Snapshot: 
screen1.gif
screen3.gif
screen2.gif
screen4.gif
screen5.gif
screen6.gif

Project joetsuihk.com

2006 年的設計, 是當時第一個完整地完成的 theme
回看當時的設計, 仍很幼嫩, 雖然視覺上還不錯的 ^_^

點擊圖放大

Snapshot: 
screen7.gif
screen6.gif
screen3.gif
screen1.gif
screen2.gif
screen4.gif
screen5.gif

使用 views 建立tabs, use view to build tabs

AttachmentSize
Image icon views-tab1.gif10.18 KB

上圖顯示了一個經過修改的 user page 的 tabs

tabs 其實來自一個 hook(), menu_local_tasks()
用 theme developer 指一下便可以看到
但這次介紹的並不是要修改這個 hook 的 theme template
而是使用 views, 新增一個tab 到這個地方

在上圖的例子,
一個 url 為 [root]/user 的 頁面,
要在 views 建立一個的 tab,

  1. 建立一個 page views
  2. 正常的輸入所需的資料 (sort, filter.....)
  3. page 的 path 要設定為 user/%/[joe] ([joe]為任何值)
  4. 在 page 的參數選項之中, 有一個 menu 的選項, 選 provide as menu tab

唯一有點難度的是設定 path
設定錯誤會令 tab 不在所需的頁面中出現
例子中, 因為user 頁 (即user profile 頁) 的正確 url 為 user/[uid]
你可以看到 edit tab 的 url 為 user/[uid]/edit
track 的 url 是 user/[uid]/track
所以, 在user 頁 輸出一個 tab 的正確 url 為 user/%/[joe]
% 是 [uid] 的萬用符

又例如, 現在的首頁的 url 為 frontpage
要提供一個首頁 tab, 便要將首頁的 url 改為 frontpage/[1]
首頁的 menu 是 default menu tab
tab 的 url 為 frontpage/[2], menu 為 menu tab
只要改變 tab 的weight 便可以控制 tab 的前後次序了

更多關於tabs:
在 drupal 的世界, tabs 的功能很多
它擔當了 "提供右鍵功能表" 的角式, 或者, "進階", "其他" 等等
從模組的角度, tabs 都是 menu 的一員, (註1)
但如果你並不是一個開發者

那你並不需要理解複雜的 menu 系統

只要懂得如何透過 views 使用它

正如你不需要輸入一句代碼便可以使用 Drupal 建立一個網站一樣

註1:
在 Drupal6+ 要清空緩存才會反映 menu 作出的修改
不過由於以上的例子是透過 views 設定, 而 views 已經替用戶清空

Pages

Google