Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts
March 5, 2014
Awesome WM vocabulary widget
換到 awesome wm 之後,上方的 bar 其實有很多空間。因為自己的記性不好,乾脆寫個小 widget,大約 60 秒就 show 一個單字,不然每次五十音我都會一直忘記
抄抄寫寫一堆很醜的 lua code 的結果如下,他會讀取 .vocabulary 這個檔案,每 60 秒亂數取其中一行顯示
檔案更新怎麼辦?重開一下 awesome 就好囉!
抄抄寫寫一堆很醜的 lua code 的結果如下,他會讀取 .vocabulary 這個檔案,每 60 秒亂數取其中一行顯示
檔案更新怎麼辦?重開一下 awesome 就好囉!
vocabulary_widget = widget({ type = "textbox" })
function vocabularyUpdate(lines)
vocabulary_widget.text = lines[math.random(0, #lines)]
end
function readFile(filename)
local arr = {}
local i = 0
local file=io.open(filename, "r")
if not file then return "empty" end
for line in file:lines() do
arr[i] = line
i = i + 1
end
return arr
end
local file = "/home/walkingice/.vocabulary"
local period = 60
math.randomseed(os.time())
content = readFile(file)
vocabulary_timer = timer({timeout = period})
vocabulary_timer:add_signal("timeout", function() vocabularyUpdate(content) end)
vocabulary_timer:start()
April 30, 2013
mSATA + HDD on Thinkpad x220
前一陣子發現自己的硬碟的聲音有點怪怪的,擔心出了問題而在緊急的時刻壞掉,開始著手換新硬碟的事情。雖然平常有備份的習慣,仍然把所有的生活照片都放在筆電裡頭,畢竟照片要是弄丟可是再多錢也買不回來,帶在身邊總是比較安心。身邊有阿宅勸敗 SSD,著實讓我心動了一下,經常編譯 image 的人都知道,花上一兩個小時編譯的時間有多麼煩人。不過拿 SSD 儲存照片感覺有點浪費
耳聞 SSD 有壽命問題,也有人說硬碟並不見得比較長壽。無論如何,如果我要用 SSD 必定是為了工作,也一定會用很粗暴的方式對待。看了 x220 的 [手冊] 才注意到有 mSATA 這個東西。
無論是選用 SSD 或是一般的 HDD (硬碟),都還有另外一個 mSATA,因此我選用 HDD + mSATA,它的優點是
「mSATA 爛掉,程式碼找不回來怎麼辦?」身為一個阿宅,當然要隨時用 git 管理,隨時把程式碼備份在遠端呀!
底下稍微紀錄一下這兩天做的事情,給未來的我當作筆記 (兩天後的我一定會忘光光怎麼做=.=)
裝完之後用 gparted 分割一下就好,最前端留了 1MB 之後我用 ext4 當作 filesystem。接著在 fstab 讓它 mount 起來即可
接著匯出安裝過的 packages list
因為我習慣對系統加密,安裝的時候記得要進 Advanced Options/Expert install。一直到磁碟分割的階段,我用 GPT 對 HDD 分出四個 Partition
接著再選擇上方的「設定已加密的 Volume」來真正為該 partition 加密。系統會先清光該 Partition 上頭的東西,因為這是新硬碟沒必要浪費時間,所以清空的步驟可以取消跳過。
此時會多出三個已加密的 Partition,依序再為他們設定 mount point 與 filesystem 即可
安裝的時候可以不用安裝 desktop 的東西,基本系統安裝完成之後會把之前的 package 全部裝回來
記憶體目前還滿夠用,叫系統沒事不要亂寫到 swap,在 /etc/sysctl.conf 加入
目前用 tmpfs 的方式把 tmp 掛起來,這樣讀寫都是在記憶體上頭。但我還不確定用 tmpfs 或是 ramfs 哪個好。(許多大廠的工程師會在 BSP build script 假設 /tmp 用不完,然後寫入一兩 G 的暫存檔 =.=)
我指定的大小是 200M,不夠的時候再重新 mount /tmp -o remount,size=300m 就好了
需要一些超舊,只存在於 stable 的 package,如 ia32-libs 與 sun-jdk。所以把 stable 加進 sources.list
在 Firefox 的網址列打開 about:config,新增以下兩個 key 與 value
耳聞 SSD 有壽命問題,也有人說硬碟並不見得比較長壽。無論如何,如果我要用 SSD 必定是為了工作,也一定會用很粗暴的方式對待。看了 x220 的 [手冊] 才注意到有 mSATA 這個東西。
無論是選用 SSD 或是一般的 HDD (硬碟),都還有另外一個 mSATA,因此我選用 HDD + mSATA,它的優點是
- 我仍然有足夠容量的 HDD 放我的照片
- 工作中的程式碼就丟到 mSATA 上面
- 系統放在 HDD 上頭,不必擔心 mSATA 掛掉,也因為吃重的工作都丟給 mSATA,HDD 的壽命應該要比之前還要久一點
「mSATA 爛掉,程式碼找不回來怎麼辦?」身為一個阿宅,當然要隨時用 git 管理,隨時把程式碼備份在遠端呀!
底下稍微紀錄一下這兩天做的事情,給未來的我當作筆記 (兩天後的我一定會忘光光怎麼做=.=)
Install mSATA
mSATA 也不過兩片 SD-Card 大小,拆下幾顆螺絲之後,把鍵盤跟支撐手腕的蓋子打開,撥開天線之後就可以看到插槽,整個安裝非常簡單,Youtube 上面有許多教學。只是看到天線用膠帶很隨意地黏在那裡,感覺有點....(聳肩)![]() |
| 藍色與白色天線底下的就是放置 mSATA 的空間 |
/dev/sdb1 /mnt/msata auto defaults,noatime,nodiratime,discard,errors=remount-ro 0 0
Change HDD
HDD 比較費工,由於 x220 有 7mm 的限制,我選的是 WD 藍標 500G 的硬碟,硬體的更換 x220 已經相當簡單了,也是 Youtube 看一下,隨便拆幾顆螺絲就搞定。軟體部份,我把 home 整個 tar 起來放到外接硬碟,裝完系統之後再解開放回(恰好我的 uid 都是 1000 :P)。備份
# 先把 X window 關掉吧,然後該 umount 的東西先卸載,沒用的東西先清掉 $ cd /media/external_storage $ rm -rf /home/myid/.cache $ sudo tar cf myid.tar /home/myid
接著匯出安裝過的 packages list
$ sudo dpkg --get-selections > dpkg_selections那 etc 目錄的東西也可以備份一下
安裝系統
安裝 Debian 很輕鬆,抓下 netinst 的 CD ISO 檔之後,直接 dd 塞到 usb stick,就可以用 usb 開機安裝了。x220 有兩個 USB2.0 以及一個 USB3.0 的 port,如果 usb 碟插在 3.0 的 Port 會在接下來的安裝過程找不到檔案,不知詳細原因為何,換到 USB 2.0 的 port 就沒問題了因為我習慣對系統加密,安裝的時候記得要進 Advanced Options/Expert install。一直到磁碟分割的階段,我用 GPT 對 HDD 分出四個 Partition
- /boot - 不加密
- / - 加密
- /swap - 加密
- /home - 加密
接著再選擇上方的「設定已加密的 Volume」來真正為該 partition 加密。系統會先清光該 Partition 上頭的東西,因為這是新硬碟沒必要浪費時間,所以清空的步驟可以取消跳過。
此時會多出三個已加密的 Partition,依序再為他們設定 mount point 與 filesystem 即可
安裝的時候可以不用安裝 desktop 的東西,基本系統安裝完成之後會把之前的 package 全部裝回來
回復備份
盡可能在 console 底下下指令,把之前的 packages 裝回來# dpkg --set-selections < dpkg_selections # apt-get update # apt-get dselect-upgrade重開機之後如果沒問題,關掉 X 回到 console 繼續把 home 給倒回來
# rm -rf /home/myid # cd /home # tar xf /media/external_storage/myid.tar
其他
其他一些眉眉角角的東西就順便紀錄一下吧救回 Touchpad 中鍵
按住中鍵並且用 Trackpoint scroll,把 /etc/X11/xorg.conf 的 Synaptics 的區塊清掉 (對,我不想用它) 並加入以下這段Section "InputClass" Identifier "Trackpoint Wheel Emulation" MatchProduct "TPPS/2 IBM TrackPoint" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "Emulate3Buttons" "false" Option "XAxisMapping" "6 7" EndSection
盡可能少用 swap
記憶體目前還滿夠用,叫系統沒事不要亂寫到 swap,在 /etc/sysctl.conf 加入
vm.swappiness=0
把 tmp 掛在記憶體上面
目前用 tmpfs 的方式把 tmp 掛起來,這樣讀寫都是在記憶體上頭。但我還不確定用 tmpfs 或是 ramfs 哪個好。(許多大廠的工程師會在 BSP build script 假設 /tmp 用不完,然後寫入一兩 G 的暫存檔 =.=)
我指定的大小是 200M,不夠的時候再重新 mount /tmp -o remount,size=300m 就好了
tmpfs /tmp tmpfs defaults,size=200m,mode=1777 0 0
安裝舊的 package
需要一些超舊,只存在於 stable 的 package,如 ia32-libs 與 sun-jdk。所以把 stable 加進 sources.list
deb http://debian.nctu.edu.tw/debian/ squeeze main contrib non-free
指定 Firefox 的 Cache Directory 到 mSATA
在 Firefox 的網址列打開 about:config,新增以下兩個 key 與 value
browser.cache.disk.parent_directory = /mnt/msata/myid/cachebrowser.cache.offline.parent_directory = /mnt/msata/myid/cache
重開 Firefox 再打開 about:cache 就可以看見 cache 目錄放在 mSATA 上面了
December 11, 2012
Dupcility 備份檔案
前言
寫在最前面希望比較多人看到大學時代經常看到有人在痛哭實驗室的電腦在畢業前夕失竊,心血結晶的論文一併消失。其實只要有備份的習慣就能夠將傷害降到最低,要維持備份的習慣最重要的是備份的流程要很簡單
另外,一顆隨身硬碟一千多元,比起丟失重要資料的風險,這筆成本幾乎可以忽略不計。
正文
我們用相機拍攝許多數位照片並存進電腦裡,一不小心因為硬碟的毀損或失竊,人生的重要回憶就不見了。老婆現在用 Ubuntu 當成日常使用的桌面環境(真的!),當然要為老婆找出備份的解決方案,這樣才能長久保存美美的照片。
找了一個看起來最簡單的工具就是 Deja-Dup,不論在 debian 或 ubuntu 底下一個指令就能裝起來了。
$ sudo aptitude install deja-dup
這個工具簡單到應該不需要再寫什麼,注意 Deja-dup design 的 screenshot 頁面說,開頭那個美美的保險箱畫面只會在第一次顯示(到底為什麼啊!?)
Deja-dup 只是一個前端工具,後端使用的是很棒的 duplicity,duplicity 有以下特點
- 備份的檔案會打包成一個 tar.gz 檔,因此備份的東西不會綁死在 duplicity 上面
- 漸進式的備份,存下有差異的部份
- 可以用密碼或 gpg 加密
附帶一提
- Deja-dup 僅提供密碼的對稱式加密
- Deja-Dup 在 restore 的時候,有時候顯示成功卻看不見還原的檔案,介面顯示的錯誤訊息不夠。此時通常是權限問題,譬如說要還原一個備份檔,備份檔裡面包含需要 root 權限的路徑,或是解開還原檔案的目錄本身權限有問題,檢查一下應該都可以成功
Duplicity
因為 Deja-dup 太簡單不需介紹。這邊簡述一下 duplicity 的指令用法,熟悉的阿宅直接看 man page 吧。duplicity 的 man page 可以看到兩個參數 URL 與 Directory。URL 代表的是備份檔要放置的位置,Directory 就是要被使用的目錄,兩者前後調換就會有 backup/restore 的功能。
不加密
# 不加密,把 /home/foo/files 備份到 /tmp/foo 底下
$ duplicity --no-encryption /home/foo/files/ file:///tmp/foo
# 把不加密的 /tmp/foo 備份還原到 /home/bar/files
$ duplicity --no-encryption file:///tmp/foo /home/bar/files
如果備份檔放置的目錄,有許多份 full tarball,會選擇日期最新的解開。
備份多個目錄
利用 include 與 exclude,似乎一定要兩者都有才會動。放在前面的優先權比較高,相關的解釋看 man page 的 ‘FILE SELECTION’$ duplicity --include /tmp/pathA --include /tmp/pathB --exclude '**' /tmp file:///tmp/backup
甚至可以寫到檔案裡面,globbing 指的是 pattern 能夠使用「* ** ?」這些特殊字元
$ cat list
/tmp/pathA
/tmp/pathB
$ duplicity --include-globbing-filelist list --exclude '**' /tmp file:///tmp/backup
對稱式加密
# 備份或還原時都需要輸入同一組密碼
$ duplicity /home/foo/files/ file:///tmp/foo
$ duplicity file:///tmp/foo /home/bar/files
非對稱式加密
使用 gpg 來做非對稱式加密$ gpg --list-secret-keys 先列出有哪些 key 可用,選一組如果該 key 有設定 passphrase,備份的時候不會問你 passphrase,因為是使用 public key 加密。但是在還原解開的時候會用到 private key,因此會需要 passphrase。
$ duplicity --encrypt-key THEKEYID /home/foo/files/ file:///tmp/foo
$ duplicity --encrypt-key THEKEYID file:///tmp/foo /home/bar/files
刪除過久的備份
備份多次以後會有數不清的檔案。可以再備份一次 full 然後刪除舊的檔案$ duplicity full YOUR_BACKUP_COMMAND幾個指令配合起來,寫個小 script。真的要備份的時候,只要把外接硬碟接上,執行 script 再出去喝口飲料,回來就可以把硬碟拔掉,應該夠簡單了吧?
$ duplicity remove-all-but-n-full 1 file:///path/to/repository # 列出可能會被刪除的檔案
$ duplicity remove-all-but-n-full 1 --force file:///path/to/repository # 真正刪除
Update
duplicity 備份的時候也會透過 gzip 壓縮,因此時間會長一點。如果不需要壓縮就加上參數 --no-compression。預設以 25 MB 為大小弄成一包,如果要改變這個大小就利用參數 --volsize,後接 100 就是以 100MB 為大小分割。
Subscribe to:
Posts (Atom)




