在開始之前,阿舍要先說一下,這篇文會提到二個和 Linux 檔案系統有關的東西,一個是 Inode,另一個就是 Block(區塊),有關 Inode 的說明和介紹請參考阿舍寫的這一篇文,而有關區塊的部份,你可以把當作是檔案系統的最小儲存單位,在 Linux 的檔案系統上,一般是 4096 byte,所以,當你存一個檔案小於 4096 byte 時,還是會用到一個區塊哩 ! 但是,一個區塊的單位也可能不是 4096 Byte,可以用下面的指令來查一下囉 ! (以阿舍的硬碟代碼是 /dev/sda1 為例)
$ blockdev --getbsz /dev/sda1
瞭解 Inode 和 Block 之後,接下來,阿舍就可以開始說明用 dd 指令複製檔案的操作步驟哩 ! 首先,當然是要先查出檔案的資料所存放的 Block 的開始和結束位置,查詢的方式有二種,下面的第一種是用檔案名稱,而第二種則是用 Inode 編號,下面是以阿舍要複製 /dev/sda1 磁碟上的 /home/arthurtoday/xyz.zip 檔案為例。
$ sudo debugfs -R 'stat /home/arthurtoday/xyz.zip' /dev/sda1
$ sudo debugfs -R 'stat <149665≶' /dev/sda1
執行完上面的指令後,會看到類似下面這樣的結果 (按下 q 字母鍵可跳出),而阿舍需要的資料是最下面那一行的數字,也就 "EXTENTS:" 下面那一行,那個就是這個檔案的 Block 開始編號 2752512 和結束編號 2786584 及它幫忙算好的共有 34072 個 Block 的這個數字哩 !
Inode: 149665 Type: regular Mode: 0640 Flags: 0x80000
Generation: 1253879810 Version: 0x00000000:00000001
User: 1000 Group: 1000 Size: 139560875
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 272584
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x558f59f3:e0d6becc -- Sun Jun 28 10:20:35 2015
atime: 0x558f5c1d:0766fe08 -- Sun Jun 28 10:29:49 2015
mtime: 0x558f59f3:e0d6becc -- Sun Jun 28 10:20:35 2015
crtime: 0x558f59f0:87318650 -- Sun Jun 28 10:20:32 2015
Size of extra inode fields: 28
EXTENTS:
(0-32767):2752512-2785279, (32768-34072):2785280-2786584
有了這幾個數字之後,阿舍就可以用 dd 指令來複製檔案囉 ! 下面就用 dd 指令來複製這個檔案的方式和說明,執行後,應該就會產出檔案,但是,複製出來的檔案可能會比原來的大,因為是以 Block 為單位來複製的,不過,並不會改變或影響檔案的內容的,但是,如果複製出來的檔案比較小,通常就會有問題哩 !
$ sudo dd if=/dev/sda1 of=f.zip bs=4096 count=34073 skip=2752512
# if 選項用來指定磁碟裝置代號
# of 選項用來指定複製出來的新檔案名稱和路徑
# bs 選項用來指定 Block 的大小,也就是用 blockdev 指令取到的數字
# count 選項用來指定要複製幾個 Block,記得要多加 1 才行,以阿舍查的檔案查到的 Block 數是 34072 為例,這個選項就要變成放 34073 才對
# skip 選項就是要放上面查到的 Block 的開始編號
這種以 Block 為基礎的資料複製方式拿來複製完整的檔案可能不太實用,但是,如果是用在無法以檔名直接複製資料或要從光碟或磁碟直接複製某些資料出來時,就會滿實用的囉 ! ...
推薦閱讀
- 問題沒解決嗎? 更多的 Ubuntu 教學在 這裡
- Prompt Injection: 提示詞注入安全漏洞
- 二款 Mac 無痛安裝的 Stable Diffusion 軟體
- 用 AI 寫部落格文章好不好 ?
- 沒有免費的 Midjourney 和 Colab 又不想花錢怎麼辦 ?
- 不學 Prompt 技巧也能善用 ChatGPT 的簡單方法
- 企業 AI 應用:不只是聊天機器人
- Automatic 比 Automatic1111 更好用 ? 都是 Stable Diffusion WebUI
- Stable Diffusion 的 /describe 圖生文功能
- AI 畫出讓人可怖的美圖 !
有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁
沒有留言 :
張貼留言
歡迎留言提問和討論 .... 😁