一次 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 的命令, 發覺它很也強大
- 使用rsync 算法的增量式backup, 在只有檔案經過修改或者新增的時候才傳送, 否則略過
- 可以使用ssh 傳送, 防止傳送時檔案資料外洩
- 使用ssh 傳送也即是可以使用ssh key pair 作自動authorize, 不用輸入密碼
- 第一次的上傳可以使用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等等的事上面
也有幫忙管服務器
是第一個中型網站的作品
使用 views 建立tabs, use view to build tabs
Attachment | Size |
---|---|
views-tab1.gif | 10.18 KB |
上圖顯示了一個經過修改的 user page 的 tabs
tabs 其實來自一個 hook(), menu_local_tasks()
用 theme developer 指一下便可以看到
但這次介紹的並不是要修改這個 hook 的 theme template
而是使用 views, 新增一個tab 到這個地方
在上圖的例子,
一個 url 為 [root]/user 的 頁面,
要在 views 建立一個的 tab,
- 建立一個 page views
- 正常的輸入所需的資料 (sort, filter.....)
- page 的 path 要設定為 user/%/[joe] ([joe]為任何值)
- 在 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 已經替用戶清空